目录
一、递归法
二、for循环
三、for循环+数组
斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多・斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下:
F(1)=1
F(2)=1 *
... ...
F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)
斐波那契数列是数学上面一个经典的例子,并且在日常生活中有很多应用,他还与黄金分割有着密不可分的联系,而且当 n 趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割值 0.618。
%20一、递归法
%20输出斐波那契数列的第n项
%20#include<stdio.h>int%20Fibon(int%20n)%20 //递归函数%20{%20 %20if%20(n%20==%201||%20n%20==%202)%20%20%20%20%20 %20return%201;%20 %20else%20%20%20%20%20 %20return%20Fibon(n-1)+%20Fibon(n-2);}int%20main(){%20%20%20%20int%20n,res=0;%20%20%20%20scanf("%d",&n);%20%20%20%20%20for%20(int%20i%20=%201;%20i%20<=%20n;%20i++)%20%20%20%20{%20%20%20%20%20%20%20%20res%20=%20Fibon(i);//%20%20%20%20%20%20printf("%d%20",res);%20%20%20%20}%20%20%20%20printf("\n第%d项斐波那契数列的值为:%d",n,res);%20%20%20%20return%200;}
%20运行结果:
%20二、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;}
三、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;}