我需要帮助的作业问题。
我必须找到加在一起的num的总和。
function getSumOfDigits(num) {
//What goes here?
}
console.log(getSumOfDigits(42), '<-- should be 6');
console.log(getSumOfDigits(103), '<-- should be 4');
考虑到这是初学者javascript,答案应该是基本的。
答案 0 :(得分:3)
将数字转换为包含split
,reduce
和数组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
。