Перейти к содержанию

Создание своей функции

Задание: рекурсия

Рекурсивная функция - это функция, которая вызывает саму себя. Это значит, что функция будет вызывать себя и повторять свое поведение до тех пор, пока не будет выполнено некоторое условие для возврата результата. Хорошим примером использования рекурсивных функций является вычисление факториала (факториал натурального числа n определяется как произведение всех натуральных чисел от 1 до n включительно). Factorial(5) пишется как 5! и рассчитывается как 5! = 5 _ 4 _ 3 _ 2 _ 1 либо:

5! = 5 * 4!

4! = 4 * 3!

3! = 3 * 2!

2! = 2 * 1!

1! = 1

def factorial(n):
    if n <= 1:
        return 1
    else:
        return n * factorial(n - 1)

factorial(5)    # 120

Чтоб лучше понять как это работает и сравнить рекурсию с циклами, мы снова обратимся к уже знакомым нам числам Фибоначчи. Определить n-ное число Фибоначчи можно рекурсивно, вызывая функцию вычисляющую числа последовательности до тех пор, пока вызов не дойдет до членов ряда меньше n = 1, где последовательность задана.


  1. Создайте функцию с сигнатурой fibonacci(n), где n - целое положительное число.
  2. Опеделите условие для возврата результата (точку выхода).
  3. Вычисление должно происходит рекурсивно, т.у. функция fibonacci должна вызываться до тех пор, пока не выполнится условие для возврата результата.
  4. Функция возращает число.

Загрузка тренажера...

Код для проверки вашей реализации,

assert fibonacci(10) == 55
assert fibonacci(30) == 832040