我理解递归的逻辑,一个函数调用一个带有基本情况的函数然后终止,我这里有一个代码记录一个简单的递归,我得不到的是它开始记录到达的条件,满足条件:0?
function factorialize(num) {
if(num === 0){
console.log('condition met: '+num);
return 1;
}
var x = factorialize(num-1); // iterate
var toReturn = num*x;
console.log("Current call: num = " + num
+ " x = " + x
+ "\n"
+ "Returning " + toReturn
);
return toReturn;
}
factorialize(5);
我期待这段代码首先记录输出,最后达到条件?
输出和demo
答案 0 :(得分:1)
在递归中,首先你去"然后你来#34; out"。
递归factorialize
电话之前的任何事情都在路上"在"。
任何事情都在路上" out"。
由于您的第二个console.log
语句在递归调用之后出现,因此它会在路上执行" out"。
您的第一个console.log
语句位于if
语句中。
if
语句出现在递归调用之前,所以它在路上的每个级别进行测试"在"中,但它只在到达console.log语句>井底。
答案 1 :(得分:0)
作为already pointed out,它是
因为factorialize(5)调用factorialize(4),它调用factorialize(3),它调用factorialize(2),调用factorialize(1),调用factorialize(0)
然后发生所有日志。