题目:写一个函数,输入n,求菲波那切数列(Fibonacci)的第n项
菲波那切数列的定义如下:
说明:除了第0项为0,第一项为1,第n项都为前俩项之和
代码如下:
//1.递归求解思路会更清晰,可是当数字为100时,此时一个数它计算了多次,递归的效率太低;
//2.解决上述问题,则采用循环;
//3.但采用循环,当你数字太大时,此类型无法存储大数,此时得去考虑大数问题
//此处不考虑大数问题了
#include<stdio.h>
//递归
int Fibonacci(unsigned int num)
{
if (num == 0 || num == 1)
{
return num;
}
return Fibonacci(num - 1) + Fibonacci(num - 2);
}
//循环
unsigned long long Fibonacci2(unsigned long long num)
{
unsigned long long first_num = 0;
unsigned long long next_num = 1;
unsigned long long third_num = 0;
if (num == 0 || num == 1)
{
return num;
}
while (num >= 2)
{
third_num = first_num + next_num;
first_num = next_num;
next_num = third_num;
--num;
}
return third_num;
}
//代码测试:
int main()
{
printf("Fibonacci(11):%d\n", Fibonacci(11));
printf("Fibonacci2(11):%d\n", Fibonacci2(11));
return 0;
}