Создание своей функции
Задание: рекурсия
Рекурсивная функция - это функция, которая вызывает саму себя. Это значит, что функция будет вызывать себя и повторять свое поведение до тех пор, пока не будет выполнено некоторое условие для возврата результата. Хорошим примером использования рекурсивных функций является вычисление факториала (факториал натурального числа 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, где последовательность задана.
- Создайте функцию с сигнатурой fibonacci(n), где n - целое положительное число.
- Опеделите условие для возврата результата (точку выхода).
- Вычисление должно происходит рекурсивно, т.у. функция fibonacci должна вызываться до тех пор, пока не выполнится условие для возврата результата.
- Функция возращает число.
Код для проверки вашей реализации,
assert fibonacci(10) == 55
assert fibonacci(30) == 832040