#include#include #define NUM 10//如果NUM很大的话,应该申请的动态内存要用long类型吧?int main() { int i; int *pFib = NULL; //在main中,申请一块内存,用于存储Fib数列的各个值; pFib = malloc(NUM * sizeof(int)); for (i = 0; i < NUM; i++) pFib[i] = 0; for (i = 1; i <= NUM; i++) printf("Fib(%d)=%d\n",i,Fib(i,pFib)); free(pFib); return 0;}long int Fib(int N,int *pFib) { if (N <= 1) { if (pFib[N] == 0) pFib[N] = 1; return pFib[N]; } else { if (pFib[N - 1] == 0) pFib[N - 1] = Fib(N - 1, pFib); if (pFib[N - 2] == 0) pFib[N - 2] = Fib(N - 2, pFib); return pFib[N - 1] + pFib[N - 2]; }}
## 通过将已经求过的FIB数列保存起来,可以大大缩减运行时间。