Javascript 返回变量和函数(递归)
运行以下脚本时,函数末尾的返回值为3Javascript 返回变量和函数(递归),javascript,recursion,Javascript,Recursion,运行以下脚本时,函数末尾的返回值为3 函数testFunction(num){ console.log(num); 如果(num==0){ 返回num; } 返回num-testFunction(num-1); } log(“最终结果是:”+testFunction(5))
函数testFunction(num){
console.log(num);
如果(num==0){
返回num;
}
返回num-testFunction(num-1);
}
log(“最终结果是:”+testFunction(5))因为testFunction(5)
返回5-testFunction(4)
,而testFunction(4)
返回2
5-2
是3
,因此testFunction(5)
返回3
,因为testFunction(5)
返回5-testFunction(4)
,而testFunction(4)
返回2
5-2
是3
,因此testFunction(5)
返回3
调试的一种方法(在本例中,为了理解发生了什么)是打印递归的每个步骤
函数testFunction(num){
如果(num==0){
返回num;
}
const nextResult=testFunction(num-1)
log(`f(${num})=${num}-${nextResult}=${num-nextResult}`)
returnnum-nextResult;
}
log(“最终结果是:”+testFunction(5))代码>调试的一种方法(在本例中,了解发生了什么)是打印递归的每个步骤
函数testFunction(num){
如果(num==0){
返回num;
}
const nextResult=testFunction(num-1)
log(`f(${num})=${num}-${nextResult}=${num-nextResult}`)
returnnum-nextResult;
}
log(“最终结果是:”+testFunction(5))代码>让我们在返回num-testFunction(num-1)时跟踪递归代码>
tf(5) = 5 - tf(4)
tf(4) = 4 - tf(3)
tf(3) = 3 - tf(2)
tf(2) = 2 - tf(1)
tf(1) = 1 - tf(0)
tf(0) = 0 **Base Case**
现在,让我们在达到tf(0)=0的基本情况后展开递归:
因此,函数最终返回3让我们在返回num-testFunction(num-1)时跟踪递归代码>
tf(5) = 5 - tf(4)
tf(4) = 4 - tf(3)
tf(3) = 3 - tf(2)
tf(2) = 2 - tf(1)
tf(1) = 1 - tf(0)
tf(0) = 0 **Base Case**
现在,让我们在达到tf(0)=0的基本情况后展开递归:
因此,函数最终返回3