目次
フィボナッチ数列 (フィボナッチ数列)、黄金分割数列とも呼ばれ、イタリアの数学者レオナルドによって提案されました。フィボナッチ。フィボナッチ数列は、1、1、2、3、5、8、13、21、34、... の数値シーケンスを指します。このシーケンスは 3 番目の項目から始まり、各項目は前の 2 つの項目と等しくなります。 .合計。数学的には、フィボナッチ数列は次のように再帰的に定義できます。
F(1)=1
F(2)=1 *
……
F(n)=F(n - 1)+F(n - 2)(n ≥ 3、 n ∈ N*)
フィボナッチ数列は数学の古典的な例であり、日常生活にも多くの応用があり、黄金分割とも密接に関係しており、n が無限大になる傾向にある場合、前期と後期の比が黄金分割に近づきます。値は 0.618 です。
1. 再帰的方法
フィボナッチ数列のn番目の項を出力します。
#include<stdio.h>
int Fibon(int n) //递归函数
{
if (n == 1|| n == 2)
return 1;
else
return Fibon(n-1)+ Fibon(n-2);
}
int main()
{
int n,res=0;
scanf("%d",&n);
for (int i = 1; i <= n; i++)
{
res = Fibon(i);
// printf("%d ",res);
}
printf("\n第%d项斐波那契数列的值为:%d",n,res);
return 0;
}
操作結果:
2.forループ
#include<stdio.h>
int main()
{
int f1 = 1; //第一项
int f2 = 1; //第二项
int f3 = 1; //如果n=3 才会进入for循环计算,否则都输出1 就不用再分别考虑前面两个数的输出问题
int n;
scanf("%d",&n);
for (int i = 2; i < n; i++)
{
f3 = f1 + f2;
f1 = f2;
f2 = f3;
// printf("%d ", f3);
}
printf("\n第%d项斐波那契数列的值为:%d",n,f3);
return 0;
}
3.forループ+配列
#include<stdio.h>
int main()
{
int a[1005],n;
scanf("%d",&n);
a[1]=1,a[2]=1,a[3]=2;
for(int i=3;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
// printf("%d\n",a[i]);
}
printf("第%d项斐波那契数列的值为:%d",n,a[n]);
return 0;
}