Рекурсия является способом программирования или кодирований задачи, в которой функция называют себя один или несколько раз в своем теле.
Обычно возвращается возвращаемое значение этого вызова функции. Если определение функции удовлетворяет условию рекурсии, мы будем называть эту функцию рекурсивной.
Рекурсивная функция должна заканчиваться для использования в программе. Обычно он заканчивается, если при каждом рекурсивном вызове решение проблемы сокращается и перемещается в базовый регистр. Базовый случай - это случай, когда проблема может быть решена без дальнейшей рекурсии. (рекурсия может привести к бесконечному циклу, если базовый случай не встречается в вызовах). Для этой проблемы, «базовый вариант» является:
if number == 0:
return 0
Простая рекурсивная функция для суммы всех цифр числа является:
def sum_digits(number):
""" Return the sum of digits of a number.
number: non-negative integer
"""
# Base Case
if number == 0:
return 0
else:
# Mod (%) by 10 gives you the rightmost digit (227 % 10 == 7),
# while doing integer division by 10 removes the rightmost
# digit (227 // 10 is 22)
return (number % 10) + sumdigits(number // 10)
Если запустить код, который мы имеем:
>>>print sum_digits(57) # (5 + 7) = 12
12
>>>print sum_digits(5728) # (5 + 7 + 2 + 8) = 22
22
return (number% 10) + sum_digits (number // 10) # Typo – Kris1511