gpt4 book ai didi

javascript - 找出添加数字后面的 javascript 片段

转载 作者:行者123 更新时间:2023-11-28 13:11:53 25 4
gpt4 key购买 nike

我看到了这个 javascript 片段/问题 here最佳答案是

function sumDigits(number) {
var remainder = number % 10;
var sum = remainder;
if(number >= 10) {
var rest = Math.floor(number / 10);
sum += sumDigits(rest);
}
return sum;
}

我正在尝试了解它是如何工作的。我能理解其中的一些台词,但还是令人困惑。

我能理解的是

var remainder = number % 10;
var sum = remainder;

返回数字的余数。换句话说,如果数字是 145,除以 10,余数是 5。因此,总和是 5。接下来,

if(number >= 10) {

该数字必须大于或等于 10,因为单个数字本身无法相加,因此“10”是可以将两个数字相加的最小值。接下来,

var rest = Math.floor(number / 10); 

145 除以 10 等于 14.5。 Math.floor 会将其向下舍入为 14。因此,rest = 14。下一步,

sum += sumDigits(rest);

由于剩余部分是 14,这意味着 sumDigits 是 14。因此,由于总和是 5,它会将自己添加到剩余部分中。换句话说,sum = 5 + 14。总之,sum 为 19。

这就是为什么它让我感到困惑,因为当 145 = 1 + 4 + 5 = 10 时它不会相加。换句话说,总和应该是 10,而不是 19?!?!??????

最佳答案

我来给你分析一下:

sumDigits(145)
5 + sumDigits(14)
5 + 4 + sumDigits(1)
5 + 4 + 1 => 10

更新1

添加括号,这显示了它的实际工作原理:

sumDigits(145)
5 + sumDigits(14)
5 + (4 + sumDigits(1))
5 + (4 + 1)
5 + 5 => 10

更新2

其实中间结果是可以打印出来的。

function sumDigits(number) {
var temp;
var remainder = number % 10;
var sum = remainder;
if (number >= 10) {
var rest = Math.floor(number / 10);
console.log(sum + " + sumDigits(" + rest + ")");
temp = sumDigits(rest);
console.log(sum + " + " + temp);
sum += temp;
}
return sum;
}
console.log(sumDigits(145));

关于javascript - 找出添加数字后面的 javascript 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41788078/

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