Подпрограмма для вычисления количества цифр натурального числа (рекурсия) - C (СИ)
Формулировка задачи:
Дошли до подпрограмм. До этого как-то шарил, а в них вот плаваю. Помогите!
ТЗ: написать подпрограмму для вычисления количества цифр натурального числа.
Решение задачи: «Подпрограмма для вычисления количества цифр натурального числа (рекурсия)»
textual
Листинг программы
size_t cnt__(int n, size_t c) {
if (n == 0)
return c;
return cnt__(n / 10, c + 1);
}
size_t cnt(int n) { return cnt__(n, 0); }
Объяснение кода листинга программы
В данном коде реализована функция cnt__(int n, size_t c), которая рекурсивно подсчитывает количество цифр в натуральном числе n.
В случае, если n равно 0, функция возвращает текущее значение счётчика c.
Иначе, функция вызывает саму себя, передавая в качестве аргументов значение n/10 и увеличивая счётчик на единицу.
Код также содержит функцию cnt(int n), которая является оберткой для cnt__(int n, 0), и просто вызывает её.
- Подпрограмма
cnt__(int n, size_t c)реализует рекурсивный подсчёт количества цифр в числеn. - Если
nравно 0, возвращается текущее значение счётчикаc. - Иначе, происходит рекурсивный вызов подпрограммы
cnt__(int n, size_t c), с аргументамиn/10иc+1. - Функция
cnt(int n)является оберткой дляcnt__(int n, 0), и просто вызывает её.