Составить рекурсивную функцию int DigitSum(int n) целого типа, которая находит сумму цифр целого числа n, не используя операторы цикла - C (СИ)
Формулировка задачи:
Составить рекурсивную функцию int DigitSum(int n) целого типа, которая находит сумму цифр целого числа n, не используя операторы цикла.
Решение задачи: «Составить рекурсивную функцию int DigitSum(int n) целого типа, которая находит сумму цифр целого числа n, не используя операторы цикла»
textual
Листинг программы
#include <stdio.h>
unsigned digitsum(unsigned n) {
return ( n < 10 ) ? n : n % 10 + digitsum(n / 10);
}
int main(void) {
unsigned n;
while ( printf("Number: ") && scanf("%u", &n) == 1 )
printf("Sum of digits: %u\n", digitsum(n));
return 0;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек: #include
- Определение функции DigitSum(int n) с типом возвращаемого значения int.
- Рекурсивный алгоритм для нахождения суммы цифр числа n.
- Если число n меньше 10, то возвращается само число n.
- Если число n больше или равно 10, то из него вычисляется последняя цифра (остаток от деления на 10), и к ней добавляется результат рекурсивного вызова функции DigitSum для числа n/10.
- В функции main() считывается число с клавиатуры, и вычисляется сумма его цифр с помощью функции DigitSum.
- Результат выводится на экран.
- После каждого вывода суммы цифр, пользователю предлагается ввести новое число.
- Цикл продолжается до тех пор, пока пользователю не надоест вводить числа.
- В конце программы возвращается 0, что означает успешный конец работы программы.