Для подсчета четных цифр целого числа основания 10 вы можете упростить функцию до следующего
int countEven(int n)
{
if (n != 0) return !(n % 2) + countEven(n/10);
else return 0;
}
Это расширяется следующим образом. Предположим, n = 258
:
countEven(258) =
1 + countEven(25) =
1 + 0 + countEven(2) =
1 + 0 + 1 + countEven(0) = 2
Обратите внимание, что оператор !(n % 2)
возвращает 1 , если n
четное, и 0 , если оно нечетное.
Для краткости вы можете сделать следующее:
int ce(int n) { return n ? !(n&1) + ce(n/10) : 0; }
с использованием троичного оператора .