Форум » C/C++ для начинающих (C/C++ for beginners) » Рекурсивная функция по определению: является ли сумма цифр числа четной или нечетной. » Ответить

Рекурсивная функция по определению: является ли сумма цифр числа четной или нечетной.

Сыроежка: Встретил на Stackoverflow интересный подход к реализации рекурсивной функции, определяющей: является ли сумма цифр числа четной или нечетной. Simply recursive function misunderstanding Подход состоит в том, что на самом деле не надо вычислять сумму цифр числа. Допустим есть число 12345. Если последняя цифра числа, в данном случае цифра 5, нечетная, то число без последней цифры 1234 должно иметь нечетную сумму цифр, чтобы исходное число имело четную сумму цифр. Ниже в демонстрационной программе приведена рекурсивная функция. [pre2] #include <stdio.h> int even_sum_of_digits( unsigned int n ) { const unsigned int Base = 10; return n < Base ? n % 2 == 0 : ( n % Base % 2 == 0 ? even_sum_of_digits( n / Base ) : !even_sum_of_digits( n / Base ) ); } int main( void ) { const unsigned int Base = 10; for ( unsigned int i = 0, value = 1; i < 10; i++, value = Base * value + 1 ) { printf( "%u: %d\n", value, even_sum_of_digits( value ) ); } } [/pre2] Вывод программы на консоль: [pre2] 1: 0 11: 1 111: 0 1111: 1 11111: 0 111111: 1 1111111: 0 11111111: 1 111111111: 0 1111111111: 1[/pre2]

Ответов - 0



полная версия страницы