求第n個斐波那契數(分別用遞迴和非遞迴兩種方法求解)
阿新 • • 發佈:2018-11-10
斐波那契數列指的是這樣一個數列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55……這個數列從第3項開始,每一項都等於前兩項之和。
這裡分別用遞迴和非遞迴的方法實現:
- 遞迴
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int fib(int n) { if (n <= 2) { return 1; } else { return fib(n - 2) + fib(n - 1); } } int main() { int n = 0; int ret = 0; scanf("%d", &n);//求第n個斐波那契數 ret = fib(n); printf("%d", ret); system("pause"); return 0; }
- 非遞迴(迭代)
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int fib(int n) { int a = 1; int b = 1; int c = 1; int i = 0; for (i = 0; i < n-2; i++) { c = a + b; a = b; b = c; } return c; } int main() { int n = 0; int ret = 0; scanf("%d", &n); ret = fib(n); printf("%d", ret); system("pause"); return 0; }