我需要编写一个递归函数,该函数将对给定数字的所有数字求和,最右边的数字除外。例如:56643->5+6+4+21
或者,如果数字是5:总和将为0,因为我们不会对正确的数字求和(在本例中,这也是我们唯一的数字(。
我试着写递归函数,但没有成功。
int sumDig(int num) {
if (num < 10)
return 0;
return (num % 10 + sumDig(num / 10));
}
感谢大家
您编写的函数将打印除第一个数字之外的num的所有数字的和,这与您想要实现的相反。考虑以下功能:-
int sumDig(int num) {
if (num > 0)
return (num % 10 + sumDig(num / 10));
else
return 0;
}
您可以使用num/10
直接调用此函数来实现您的用例。或者,您可以使用包装器函数。
因为基本情况是num<10
,所以实际上添加了除最高有效数字之外的所有数字。
要获取除最后一位之外的所有数字,可以通过让函数获取倒数第二位数字并将其添加到递归调用的结果中来完成。
int sumDig(int num) {
if (num == 0) {
return 0;
}
return ((num / 10) % 10) + sumDig(num / 10);
}