斐波那契数列是什么?斐波那契数列第一和第二两项都是1,第三项以及后面的第n项(n>=3)为前两项之和,第三项为2,第四项为3,以此类推。
怎么求斐波那契数列的第n项,我们主要有三种办法,第一:用两个数不停相加更新;第二:使用数组;第三:使用递归;(代码在最后)
第一种:
这种求第n项比较麻烦,一般写来求前几项。
第二种:
利用数组,第n项(n>=3)为前两项之和,数组可以存入斐波那契数列的各项的值,我们要想知道第几项,知道下标就行(这里仅仅在前10项里面,由于斐波那契数列增长很大,注意范围)
第三种:递归
斐波那契数列数列开始第一项和第二项的值是1,我们可以把这个当作递归的终止条件,即if(n<=2) return 1;此时就不再递归,当n>=3时,就再次使用函数,因为是前两项之和,就使用两次,直到n减为1或2。
代码仅供参考:
1
#include <stdio.h>
int main() {
int f1 = 1, f2 = 1;
for(int i=0;i<20;i++)
{
printf("%d %d ",f1,f2);
f1 = f1 + f2;
f2 = f2 + f1;
}
return 0;
}
2
#include <stdio.h>
int main() {
int n;
scanf("%d",&n);
int a[10];
a[0]=a[1]=1;
for(int i=2;i<10;i++)
{
a[i]=a[i-1]+a[i-2];
}
printf("%d\n",a[n]);
return 0;
}
3
#include <stdio.h>
int Fibonacci(int n){
if(n<=2) return 1;
else return (Fibonacci(n-1)+Fibonacci(n-2));
}
int main() {
int n;
scanf("%d",&n);
int F=Fibonacci(n);
printf("%d\n",F);
return 0;
}