gpt4 book ai didi

带有递减参数的javascript递归

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:37 24 4
gpt4 key购买 nike

你好,我刚开始学习递归,但我不知道如何解决这个问题,导致这个使用 2 个参数,我不知道如何返回 2 个参数。

这是正常循环,不是递归,但我不知道如何将其更改为递归:

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

编辑:我做的递归:

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);

它不会工作,因为 number* deret(这里有 2 个参数) ??这就是为什么我不知道如何使它成为具有 2 个参数的递归,你如何保存它并将它与 2 个参数相乘?

最佳答案

您可以使用带有检查的递归函数。

您需要一个递归函数来检查递归是否应该停止,或者该函数是否应该使用相同或更改的参数再次调用。然后,您需要在这两种情况下都返回一个值。

根据经验,乘法返回最后一个值 1,加法返回 0

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 = 168

使用 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 = 168

奖励:最短的版本。

function deret2(num, num2) {
return +(num < 1) || num * deret2(num - num2, num2);
}

console.log(deret2(12, 5)); //12* 7 * 2 = 168

关于带有递减参数的javascript递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com