遞迴和非遞迴分別實現求第n個斐波那契數。
阿新 • • 發佈:2018-11-29
//非遞迴 int main() { int a = 0; int b = 1; int c = 0; int i = 0; int n = 0; printf("請輸入數字n(n>2)求第n個斐波那契數:"); scanf("%d",&n); for(i = 0;i<n-2;i++)//第一第二個為0,1 { c = a + b; a = b; b = c; } printf("%d",b); return 0; } //遞迴 int fib(int n) { if(n<=2) return 1; else return fib(n-1)+fib(n-2); } //用遞迴指數增長,效率太低, //迭代 int fib(int n) { int a = 1; int b = 1; int c = 0; int i = 0; if(n<=2) return 1; else { for(i = 0;i<n-2;i++) { c = a+b; a = b; b = c; } } return c; } int main() { int n = 0; int ret = 0; printf("請輸入數字n:"); scanf("%d",&n); fib(n); ret = fib(n); printf("%d",ret); return 0; }