gpt4 book ai didi

javascript - 我被困在 multiplicativePersistence 算法问题上。我不知道为什么这段代码不起作用

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

让函数 MultiplicativePersistence(num) 接受传递的 num 参数,该参数始终为正整数,并返回其乘法持久性,即您必须将 num 中的数字相乘直到达到一位数的次数。

例如:如果 num 是 39 那么你的程序应该返回 3 因为 3 * 9 = 27 然后 2 * 7 = 14 最后 1 * 4 = 4 并且你在 4 处停止。

我的代码运行良好。但是测试用例说这是不正确的。你们能告诉我为什么它不起作用吗?

var userInput = prompt("Enter a num:");

var MultiplicativePersistence = function(num) {
var arr = num.toString().split('');
var multiplicative = 1;

for(var i = 0; i < arr.length; i++){
if(arr.length === 1){
return Number(arr[0]);
}
multiplicative *= Number(arr[i]);
}

if(multiplicative < 10){
return multiplicative;
}

return MultiplicativePersistence(multiplicative);
};

console.log(MultiplicativePersistence(userInput));

当输入 786 时,测试用例说正确答案是 4。但我认为正确答案是 0。我错了吗?

最佳答案

您得到的答案是 0,因为您的函数所做的最后一次计算是“2 * 0”,它等于 0。然后您将返回此值。

看起来你应该返回你必须做的乘法次数(你运行你的函数的次数)而不是结果。

您可以通过跟踪函数在全局变量中运行的次数并将其返回来解决此问题。

var userInput = prompt("Enter a num:");
var numberOfTimesFunctionRuns = 0;

var MultiplicativePersistence = function(num) {
var arr = num.toString().split('');
var multiplicative = 1;
numberOfTimesFunctionRuns++;

for(var i = 0; i < arr.length; i++){
if(arr.length === 1){
return numberOfTimesFunctionRuns;
}
multiplicative *= Number(arr[i]);
}

if(multiplicative < 10){
return numberOfTimesFunctionRuns;
}

return MultiplicativePersistence(multiplicative);
};

console.log(MultiplicativePersistence(userInput));

关于javascript - 我被困在 multiplicativePersistence 算法问题上。我不知道为什么这段代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652561/

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