Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回变量和函数(递归)_Javascript_Recursion - Fatal编程技术网

Javascript 返回变量和函数(递归)

Javascript 返回变量和函数(递归),javascript,recursion,Javascript,Recursion,运行以下脚本时,函数末尾的返回值为3 函数testFunction(num){ console.log(num); 如果(num==0){ 返回num; } 返回num-testFunction(num-1); } log(“最终结果是:”+testFunction(5))

运行以下脚本时,函数末尾的返回值为3

函数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