У вас есть итеративное решение, а не рекурсивное.
Рекурсия включает определение проблем с точки зрения более простой версии проблемы, все время работающей в направлении фиксированной конечной точки.
Фиксированная конечная точка в этом случае представляет собой любое число, меньшее 10, для которого значение является этой цифрой.
Переход к более простому случаю (для чисел больше 9) - это просто добавить наименее значащую цифру в результат числа, деленного на десять (целочисленное деление).
Так как это классная работа, псевдокод только я боюсь.
def digitSum (n):
if n < 10:
return n
return (n % 10) + digitSum (n/10)
Если вы будете следовать, что для числа 314
, вы увидите, что происходит.
- На уровне рекурсии один,
n == 314
поэтому рассчитывает 314 % 10
получить 4
и вызывает digitSum(31)
.
- На уровне рекурсии два,
n == 31
поэтому он рассчитывает 31 % 10
для получения 1
и звонит digitSum(3)
.
- На третьем уровне рекурсии,
n == 3
так он просто возвращает 3
- Резервное копирование на два уровня, который добавляется к запоминаемой
1
и вернулся в 4
.
- Обратно на уровень один, это добавлено к запомненному
4
и возвращено как 8
.
Следовательно, вы получите цифру 8
на номер 314
.
Это итерационное ('for' loop) решение и не использует рекурсию. – FrankPl