Javascript递归与参数递减
javascript recursive with parameters to decrement
你好,我是新学习递归,但我不知道如何解决这个问题,因为这个使用两个参数,我不知道如何返回两个参数。
这是正常的循环,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
编辑:我做的递归:
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 arguments here)
??这就是为什么我不知道如何让它变成两个参数的递归,你怎么能保存它并将它乘以两个参数呢?
您可以使用带有check的递归函数
对于递归函数,您需要检查递归是否应该停止,或者是否应该使用相同或更改的参数再次调用该函数。然后,您需要在这两种情况下都返回一个值。经验法则,对于乘法返回最后值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
递归函数调用自己,并且使用额外的参数,我们不需要跟踪变化的变量。循环和递归非常密切相关,以至于转换是机械的。
function deret2(num,num2,tampung){
if (num >= 1) {
deret2(num - num2, num2, tampung * num);
} else {
console.log(tampung);
}
}
deret2(12,5,1); //12* 7 * 2 = 168
注意,我们现在直接传递tampung
的初始值,而不是将其编码到递归中。如果您不希望调用者传递tampung
的基值,那么创建一个辅助函数来编码该基值,然后开始递归是相当常见的。
一个递归函数应该在函数内部声明它自己并且有一个stop if条件:
function deret2(startNumber,step){
if(startNumber>= 1){
return startNumber * deret2(startNumber - step, step);
}else{
return 1;
}
}
deret2(12,5); //12* 7 * 2 = 168
相关文章:
- 数组在递归方法中设置为null
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- 递归使用 eval() 是检查程序执行的好方法吗?
- 使用递归、Ramda.js和无点样式重构字符串的getPermutations()
- 在嵌套递归指令中将参数传递给父控制器方法
- 如何检查传递到递归函数的参数是否是数组的元素
- 将参数传递给递归函数javaScript
- setTimeout和带参数的递归函数
- 递归函数中的参数串联
- Javascript递归与参数递减
- bind函数递归传递参数失败
- 使用Javascript的具有两个参数的非递归函数
- 带参数的递归javascript函数
- 理解递归函数的解构参数
- JavaScript从递归调用函数中获取调用堆栈参数
- JS将数组作为参数传递给递归函数
- 具有动态参数的递归
- 在console.log中添加深度参数用于递归
- 递归函数(插件?)与不断变化的参数,直到达到数(jQuery)
- 递归地调用匿名函数而不使用参数