递归超时如何处理
递归在递归次数多的时候空间复杂度跟时间复杂度都特别高,故需再用动态规划思路,在递归的过程中不断记录计算过的dfs(),需要的时候可以直接调用.
比如经典母牛问题:
long long fab(int month) {
if(cow[month] == 0) { // 没有算过的月份,数组内存的是0
cow[month] = fab(month-1) + fab(month-3);
return cow[month];
} else {
return cow[month];
}
递归在递归次数多的时候空间复杂度跟时间复杂度都特别高,故需再用动态规划思路,在递归的过程中不断记录计算过的dfs(),需要的时候可以直接调用.
比如经典母牛问题:
long long fab(int month) {
if(cow[month] == 0) { // 没有算过的月份,数组内存的是0
cow[month] = fab(month-1) + fab(month-3);
return cow[month];
} else {
return cow[month];
}