您的位置:首页 > 其它

9--斐波那契数列

2015-09-27 19:00 267 查看
/*
斐波那契数列

本题主要讨论递归和循环的效率问题。
*/

#include <stdio.h>

static int i = 0;
//递归实现
int fibonacci_solution_one(int num)
{
i++;
if (num == 0 || num == 1)
return 1;
return fibonacci_solution_one(num - 1) + fibonacci_solution_one(num - 2);
}

//循环实现
int fibonacci_solution_two(int num)
{
if (num == 0 || num == 1)
return 1;

i = 1;
int p1 = 1;
int p2 = 1;
int temp = 0;

for (int j = 2; j <= num; j++)
{
i++;
temp = p1 + p2;
p1 = p2;
p2 = temp;
}

return temp;
}

void testOne(int num)
{
i = 0;
printf("fibonacci_solution_one --  %d\n", fibonacci_solution_one(num));
printf("i = %d\n", i);
}

void testTwo(int num)
{
i = 0;
printf("fibonacci_solution_two -- %d\n", fibonacci_solution_two(num));
printf("i = %d\n", i);
}

int main()
{
testOne(0);
testOne(1);
testOne(2);
testOne(20);

testTwo(0);
testTwo(1);
testTwo(2);
testTwo(20);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: