将数字的数字相加并返回总和

时间:2019-04-07 06:10:35

标签: javascript digits

我需要帮助的作业问题。

我必须找到加在一起的num的总和。

function getSumOfDigits(num) {
    //What goes here?
}

console.log(getSumOfDigits(42), '<-- should be 6');

console.log(getSumOfDigits(103), '<-- should be 4');

考虑到这是初学者javascript,答案应该是基本的。

4 个答案:

答案 0 :(得分:3)

将数字转换为包含splitreduce和数组function getSumOfDigits(num) { return [...num.toString()].reduce((acc, curr) => +acc + +curr); } console.log(getSumOfDigits(42)); console.log(getSumOfDigits(103));的字符串:

 public function edit($id)
    {
        $key = Hashids::connection('main')->decode($id)[0] ??  abort(404);
        $post = Post::findOrFail($key);
        $tags = Tag::all();
        $tags2 = array();
        foreach($tags as $tag){
            $tags2[$tag->id] = $tag->name;
        }
        return view('dashboard.adminblogpost.editpost', compact('post','tags2'));
    }

答案 1 :(得分:2)

您可以将数字除以10,然后使用模数10提取最后一位:

function getSumOfDigits(num) {
    let sum = 0;
    while (num > 0) {
        sum += (num % 10);
        num = Math.floor(num / 10);
    }
    return sum;
}

console.log(getSumOfDigits(42))
console.log(getSumOfDigits(102))

答案 2 :(得分:2)

您可以模数(%)10来获取最后一位数字,然后将该数字加起来求和。 加和后,从值中删除最后一位。

var value = 123456,
    sum = 0;

while (value) {
    sum += value % 10;
    value = Math.floor(value / 10);
}

console.log(sum);

答案 3 :(得分:1)

您可以使用递归方法,即从每次调用的#include <stdio.h> #define MAXLEN 1000 int getLine(char s[]); void reverse(char r[], char s[], int len); int main() { char string[MAXLEN]; char reversed[MAXLEN]; int len; while((len = getLine(string)) != 0) { reverse(reversed, string, len); printf("%s\n", reversed); } return 0; } int getLine(char line[]) { int i, c; i = 0; while((c = getchar()) != EOF && c != '\n') { line[i] = c; i++; } line[i + 1] = '\0'; return i; } void reverse(char r[], char s[], int len) { int i; i = 0; while(len >= 0) { r[i++] = s[len--]; } r[i] = '\0'; } 中删除最后一个数字,然后将其与一个从0到n-1的整数之和的调用相加(其中num是数字中的位数)

请参见以下示例:

n

上面的函数的工作方式如下,在本示例中,我将输入const getSumOfDigits = num => num < 10 ? num : num%10 + getSumOfDigits(~~(num / 10)) console.log(getSumOfDigits(42), '<-- should be 6'); console.log(getSumOfDigits(103), '<-- should be 4');设为103:

getSumOfDigits(103) = 3 + getSumDigits(10)

getSumOfDigits(10) = 0 + getSumDigits(1)

getSumDigits(1) = 1 // base case hit

一旦我们打了对num的呼叫,而不再返回对getSumDigits的呼叫,我们就打了基本情况,因此可以开始算出先前的情况电话。因此,从下往上进行工作:

getSumDigits(1) = 1

getSumOfDigits(10) = 0 + getSumDigits(1) 1 = 1

getSumOfDigits(103) = 3 + getSumDigits(10) 1 = 4 

因此,如上所示,返回的结果将是getSumDigits