C语言求斐波那契数列

2024-01-07 17:13:40

斐波那契数列是什么?斐波那契数列第一和第二两项都是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;
}

文章来源:https://blog.csdn.net/2303_76472344/article/details/135428738
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。