我需要将int中所有可以用2整除的数字相加。这是我到目前为止所拥有的。如果我的int是“ 4544”,当我运行代码时,它会打印出来: 4 4 5 8
sum = 8当时是正确的,但是程序在碰到一个不能被2整除的数字后就停止调用它自己;即5。
我尝试添加另一个条件以使代码不断调用自身,但是无论我尝试什么,我都会遇到分段错误。
int digit = 0;
int sum = 0;
while (num > 0){
digit = num%10;
num /=10;
break;
}
std::cout<<digit<<std::endl;
if (digit % 2 == 0){
sum += digit + rec_sum_even (num);
}
return sum ;
答案 0 :(得分:1)
如果您需要递归函数,则应检查一位数字,而不是整数。然后,您可以递归地为每个数字调用此函数。请注意,递归函数的基本情况应该返回 0位数的总和,即 0 。
这是示例代码:
unsigned int sum_even(unsigned int num){
if(num == 0){
return 0;
}
int sum = 0;
int last_digit = num % 10;
if(last_digit % 2 == 0){
sum += last_digit;
}
return sum + sum_even(num/10);
}