求的是斐波那契数列的和=》1 + 2 + 3 + 5 + 8 + 13 + .... + n算法
int recursiveFbi(int n) { if (n == 1 || n == 2) { return n; } else { return recursiveFbi(n - 1) + recursiveFbi(n - 2); } } 复制代码
int Fbi(int n) { int *a = (int*)malloc(sizeof(int) * n); a[0] = 1; a[1] = 2; for (int i = 2; i < n; i++) { a[i] = a[i-1] + a[i-2]; } int ret = a[n-1]; free(a); return ret; } 复制代码
当我动态规划写完,发现空间还能够再优化一下markdown
int Fbi2(int n) { int a1 = 1; int a2 = 2; int a3 = 0; for (int i = 2; i < n; i++) { a3 = a2 + a1; a1 = a2; a2 = a3; } int ret = a3; return ret; } 复制代码
int main(int argc, const char * argv[]) { // insert code here... printf("Hello, Fbi!\n"); int n = 10; printf("递归:%d层楼梯有%d种方法\n", n , recursiveFbi(n)); printf("动态规划:%d层楼梯有%d种方法\n", n , Fbi(n)); printf("动态规划-空间优化:%d层楼梯有%d种方法\n", n , Fbi2(n)); return 0; } 复制代码
算法题-杨辉三角post