gpt4 book ai didi

javascript - 如何在我的递归函数中声明一个计数器? (附加持久性 : Coderbyte)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:30 25 4
gpt4 key购买 nike

在应对一些 Coderbyte 挑战时,我能够递归地解决以下问题,但希望得到一些关于如何改进它的反馈。

Have the function AdditivePersistence(num) take the num parameter being passed which will always be a positive integer and return its additive persistence which is the number of times you must add the digits in num until you reach a single digit.

For example: if num is 2718 then your program should return 2 because 2 + 7 + 1 + 8 = 18 and 1 + 8 = 9 and you stop at 9.

我提交的有效递归解决方案如下。我怎样才能将“计数”放入我的函数中,而不让它在我每次递归时都被“重置”?

var count = 0;
function AdditivePersistence(num) {
count = 0;
if (num < 10) {
return count;
}
if (num > 10) {
count++;
AdditivePersistence('' + num.split("").reduce(function(a,b) {
return parseInt(a) + parseInt(b)
}));
}
}

这是我在函数内移动计数器的失败尝试...希望能为我的初学者提供任何指示。除了修复代码之外,如果还有其他解决这个难题的好方法,我会很高兴!

function AdditivePersistence(num) {
var count = 0;
(function recurse(num) {
if (num < 10) {
return count;
}
if (num > 10) {
count++;
recurse('' + num.split("").reduce(function(a,b) {
return parseInt(a) + parseInt(b);
}));
}
})();
return count;
}

编辑:我刚刚尝试使用下面的 while 循环

function AdditivePersistence(num) {
var count = 0;
while (num >= 10) {
count++
num = num.toString().split('').reduce(function(a,b) {
return parseInt(a) + parseInt(b);
})}
return count;
}

非常感谢!

最佳答案

这个想法很简单

AdditivePersistence(n):
if n < 10
return 0
else
return 1 + AdditivePersistence(sum-of-digits(n))

严格来说,这里不需要递归 - 这本质上是一个普通的 while 循环。

关于javascript - 如何在我的递归函数中声明一个计数器? (附加持久性 : Coderbyte),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875169/

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