
Напишите рекурсивную функцию вычисления суммы цифр натурального числа. Формат входных данных На
вход ваша программа получает одно натуральное число n (n<216)(n<216). Формат выходных данных Выведите одно число — сумму цифр числа n.

Ответы на вопрос

function f(n: int64): int64;
begin
if(n > 0) then f := f(n div 10) + (n mod 10);
end;
begin
readln(n);
write(f(n));
end.



Рекурсивная функция вычисления суммы цифр натурального числа
Для решения данной задачи можно использовать рекурсивную функцию. Рекурсия - это процесс, в котором функция вызывает саму себя.
В данном случае, чтобы вычислить сумму цифр натурального числа, мы можем использовать следующий алгоритм:
1. Базовый случай: Если число состоит из одной цифры, то сумма цифр равна самому числу. В этом случае мы просто возвращаем это число.
2. Рекурсивный случай: Если число состоит из нескольких цифр, то мы можем разделить его на первую цифру и оставшуюся часть числа. Затем мы вызываем рекурсивно функцию для оставшейся части числа и добавляем результат к первой цифре.
Вот пример реализации данной функции на языке Python:
```python def sum_of_digits(n): if n < 10: return n else: return n % 10 + sum_of_digits(n // 10) ```
Примечание: В данном примере предполагается, что входное число `n` является натуральным числом (целым положительным числом).
Пример работы функции
Давайте рассмотрим пример работы функции `sum_of_digits` на числе 12345:
1. Первый вызов: `sum_of_digits(12345)` - Число 12345 состоит из нескольких цифр, поэтому мы переходим к рекурсивному случаю. - Мы делим число на первую цифру (5) и оставшуюся часть числа (1234). - Затем мы вызываем рекурсивно функцию `sum_of_digits` для оставшейся части числа (1234) и добавляем результат к первой цифре (5). - Рекурсивный вызов: `sum_of_digits(1234)` 2. Второй вызов: `sum_of_digits(1234)` - Число 1234 также состоит из нескольких цифр, поэтому мы снова переходим к рекурсивному случаю. - Мы делим число на первую цифру (4) и оставшуюся часть числа (123). - Затем мы вызываем рекурсивно функцию `sum_of_digits` для оставшейся части числа (123) и добавляем результат к первой цифре (4). - Рекурсивный вызов: `sum_of_digits(123)` 3. Третий вызов: `sum_of_digits(123)` - Число 123 также состоит из нескольких цифр, поэтому мы снова переходим к рекурсивному случаю. - Мы делим число на первую цифру (3) и оставшуюся часть числа (12). - Затем мы вызываем рекурсивно функцию `sum_of_digits` для оставшейся части числа (12) и добавляем результат к первой цифре (3). - Рекурсивный вызов: `sum_of_digits(12)` 4. Четвертый вызов: `sum_of_digits(12)` - Число 12 состоит из двух цифр, поэтому мы снова переходим к рекурсивному случаю. - Мы делим число на первую цифру (2) и оставшуюся часть числа (1). - Затем мы вызываем рекурсивно функцию `sum_of_digits` для оставшейся части числа (1) и добавляем результат к первой цифре (2). - Рекурсивный вызов: `sum_of_digits(1)` 5. Пятый вызов: `sum_of_digits(1)` - Число 1 состоит из одной цифры, поэтому мы достигли базового случая. - В этом случае мы просто возвращаем число 1. 6. Возврат из рекурсии: - Возвращаем результат рекурсивного вызова `sum_of_digits(1)` (который равен 1) и добавляем его к первой цифре (2) в вызове `sum_of_digits(12)`. - Получаем результат 3. 7. Возврат из рекурсии: - Возвращаем результат рекурсивного вызова `sum_of_digits(3)` (который равен 3) и добавляем его к первой цифре (3) в вызове `sum_of_digits(123)`. - Получаем результат 6. 8. Возврат из рекурсии: - Возвращаем результат рекурсивного вызова `sum_of_digits(6)` (который равен 6) и добавляем его к первой цифре (4) в вызове `sum_of_digits(1234)`. - Получаем результат 10. 9. Возврат из рекурсии: - Возвращаем результат рекурсивного вызова `sum_of_digits(10)` (который равен 10) и добавляем его к первой цифре (5) в вызове `sum_of_digits(12345)`. - Получаем результат 15.
Таким образом, сумма цифр числа 12345 равна 15.
Примечание: При реализации данной функции на других языках программирования, возможно, потребуется некоторая адаптация кода.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili