用遞迴和非遞迴實現斐波那契數列
阿新 • • 發佈:2018-12-13
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用
#include <stdio.h> int Fib(int n) //遞迴 { if(n<0) printf("n<0,data error\n"); else if(n==1 || n==2) return 1; else { return Fib(n-1) + Fib(n-2); } return 0; } int Fibonaci_f(int n) //非遞迴 { int i=0,result=0; int a=1,b=1; if(n<0) printf("n<0,data error\n"); else if(n<=2) return 1; else { for(i=3;i<=n;i++) { result = a + b; a=b; b=result; } } return result; } int main() { int n,ret=0,ret2=0; printf("請輸入下標:\n"); scanf("%d",&n); ret = Fib(n); ret2=Fibonaci_f(n); printf("遞迴:the %d fib is %d\n",n,ret); printf("非遞迴:the %d fib is %d\n",n,ret2); return 0; }