Del*_*son 3 javascript recursion parameter-passing
你好我是新学习递归但我不知道解决这个问题,导致这个使用2参数,我不知道如何返回2参数.
这是正常的循环,not a recursive但导致我不知道如何将其更改为recursive:
function deret2(num,num2){
var tampung = 1;
for (var i= num; i >= 1 ; i-= num2){
tampung = tampung * i ;
}
console.log(tampung);
}
deret2(12,5); //12* 7 * 2 = 168
Run Code Online (Sandbox Code Playgroud)
编辑:我做的递归:
function deret(num,num2) {
//var tampung = 1;
if (num <= 0) { // terminal case
return 1;
} else
{ // block to execute
return num * deret(num-num2,num2);
}
};
deret(12,5);
Run Code Online (Sandbox Code Playgroud)
它不会起作用number* deret(2 arguments here)吗?? 这就是为什么我不知道如何使用2个参数进行递归,你怎么能保存它并将它与2个参数相乘?
你可以使用带有check的递归函数.
你需要一个递归函数检查递归是否应该停止,或者函数是否应该使用相同或更改的参数再次调用.然后在两种情况下都需要返回值.
经验法则,乘法返回作为最后一个值1和添加0.
Run Code Online (Sandbox Code Playgroud)num num2 return --- ---- ------------------ 12 5 12 * deret2(7, 5) 7 5 7 * deret2(2, 5) 2 5 2 * deret2(-3, 5) -3 5 1
function deret2(num, num2) {
return num >= 1 ? num * deret2(num - num2, num2) : 1;
}
console.log(deret2(12, 5)); //12* 7 * 2 = 168Run Code Online (Sandbox Code Playgroud)
用if语法.
function deret2(num, num2) {
if (num >= 1) {
return num * deret2(num - num2, num2);
} else {
return 1;
}
}
console.log(deret2(12, 5)); //12* 7 * 2 = 168Run Code Online (Sandbox Code Playgroud)
奖金:最短的版本.
function deret2(num, num2) {
return +(num < 1) || num * deret2(num - num2, num2);
}
console.log(deret2(12, 5)); //12* 7 * 2 = 168Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1124 次 |
| 最近记录: |