假设我们具有以下递归方法:
const nextOdd = (num, callback) => {
const next= num+1;
if(next % 2){
return callback(next)
} else {
nextOdd(num,callback);
}
}
当我递归调用nextOdd
时,将在我的堆栈中添加一个新条目。因此,我想到了在递归过程中使用较小堆栈的各种方法:
nextOdd
方法时返回:此方法的思想是退出该方法,然后调用该方法。
const nextOdd = (num, callback) => {
const next= num+1;
if(next % 2){
return callback(next)
} else {
return nextOdd(num,callback);
}
}
这个想法是一样的,我可以通过将要调用的方法放入event loop +中来清空上一次方法调用中的堆栈条目,以优先考虑其他操作如果有的话,先发生。
const nextOdd = (num, callback) => {
const next= num+1;
if(next % 2){
return process.nexctTick( () => callback(next))
} else {
return process.nextTick( () => nextOdd(next, callback) );
}
}
但是我认为的方法不会对递归产生任何影响,特别是当我期望大量递归调用时?