易错点:递归时候超时
超时原因:相同数字多次计算
例如:
F(100) = F(99)+F(98)
F(99) = F(98) + F(97)
这个过程中F(98)就已经计算两次,因此超时
超时应对方法:
建立数组(或者哈希表),方便避免相同数字重复计算
class Solution {
public:
int nums[101] = {};
int fib(int n) {
if(nums[n] == 0 && n != 0)
{
if(n < 2 && n > 0)
nums[n] = n;
else
{
nums[n] = (fib(n - 1) + fib(n - 2)) % 1000000007;
}
}
return nums[n];
}
};