返回int中所有可被2 c整除的数字的总和

时间:2018-10-03 05:47:07

标签: c++ recursion

我需要将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 ;

1 个答案:

答案 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);
}