gpt4 book ai didi

javascript - 对一个负数的数字求和

转载 作者:行者123 更新时间:2023-11-30 07:30:38 27 4
gpt4 key购买 nike

'Write a function named sumDigits which takes a number as input and returns the sum of each of the number's decimal digits.'

如何将第一个数字为负数的数字相加?

例如:sumDigits(-32);//-3 + 2 = -1;

我能够部分解决它。

function sumDigits(number) {
return Math.abs(number).toString().split("").reduce(function(a, b) {
return parseInt(a) + parseInt(b);
}, 0);
}

console.log( sumDigits(-32) );

最佳答案

简单的数学和递归可以简化这个问题。

回想一下,当您将一个数除以 10 时,余数是它最右边的小数位,而商的整数部分是剩余数位组成的数。换句话说:

let n = 5678;
console.log(n % 10); // => 8
console.log(Math.floor(n / 10)); // => 567

考虑到这一点,对数字的数字求和是一个简单的递归过程:

Procedure(n)

  1. Divide n by 10.
    • Set digit to the remainder.
    • Set n to the integer part of the quotient.
  2. If n = 0, return digit.
  3. Otherwise, return digit + Procedure(n)

保留最左边数字的符号会增加少量的复杂性,但不会太多。这是它在 JavaScript 中的样子:

function digitSum(n, sign=1) {
if (n < 0) {
sign = -1; // Save the sign
n = Math.abs(n);
}

const digit = n % 10; // Remainder of |n÷10|
n = Math.floor(n / 10); // Integer part of |n÷10|

if (n === 0) {
return sign * digit; // No digits left, return final digit with sign
}
return digit + digitSum(n, sign); // Add digit to sum of remaining digits
}

console.log(digitSum(32)); // => 5
console.log(digitSum(-32)); // => -1

关于javascript - 对一个负数的数字求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715699/

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