斐波那契数列
1 1 2 3 5 8 13 21 34 55 ........
从第3项起,前两项和等于后一项。
代码实现(用递归):
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int rec(int n) { if (n <= 2) return 1; else return (rec(n - 2) + rec(n - 1)); } int main() { int n = 0; scanf("%d",&n); int k =rec(n); printf("%d\n",k); return 0; }
代码实现(非递归):
#include <stdio.h> int rec(int n) { int a = 1; int b = 1; int sum = 0; if (n <= 2) return 1; if (n > 2) { int i = 1; while (i <= (n - 2)) { sum = a + b; a = b; b = sum; ++i; } return sum; } } int main() { int n = 0; scanf("%d",&n); int m =rec(n); printf("%d\n",m); return 0; }
代码讲解:
图文讲解:
运行结果: