0001 extern uint64_t M[]; //快查表:前两项已初始化为0、1,其余各项均为UINT64_MAX 0002 uint64_t fibM(int n) { //记忆化版:O(n) 0003 if (UINT64_MAX == M[n]) //每个子问题,只会在第一次求值时 0004 M[n] = fibM(n-1) + fibM(n-2); //才需照常递归计算 0005 return M[n]; //否则,可以直接引用快查表 0006 } //fibM:既然递归基的答案已经预存,故可省去对应的判断