首先 我解释一下什么是斐波那契数列;
1 1 2 3 5 8 13 ……;
相信大家都找到了规律;
(1)前两个数都是1;
(2)第三个数=前两个数之和。
由此,我们就找到了解题的根源
有这个函数关系,我们就可以写递归的代码了
int fib(int i)
{
if(i<=2)
{
return 1;
}
else
{
return fib(i-1)+fib(i-2);
}
}
非递归我先给大家上代码
然后解释
int fib(int i)
{
if (i <= 2)//当求前两个数时,直接返回1;
return 1;
int a = 1;
int b = 1;
int c = 0;
while (i-2>0)//循环的条件,注意我们已经把前两个都算上了,所以循环条件一定要 -2;
{
c = a + b;
a = b;
b = c;
i--;
}
return c;
}
以上就是这道题的算法,如果还有疑问,可以在下面直接评论 。
文末,我想问大家知道斐波那契数列的别名吗,欢迎评论 欧~~~~