斐波那契数列的非递归
int func(int n){ if (n ==0) return 0; if (n == 1) return 1; int p = 0; int q = 1; for (int i = 1; i < n; i++){ int tmp = p; p = q; q = tmp + p; } return q; }
还有一种方法是使用一个全局数组来保存递归中已经计算过的数
int func(int n){ int memo[n+1]; fib(n); } int fib(int n){ if (n <= 1){ return n; } if (memo[n] != 0) return memo; } return memo[n] = fib(n-1) + fib(n-2);