Найти - Пользователи
Полная версия: Помогите разобраться с рекурсией!!!
Начало » Python для новичков » Помогите разобраться с рекурсией!!!
1
zmeelov
В качестве учебного примера рекурсии мне показали программу, вычисляюющую факториал вводимого числа. Код приведен ниже.

def factorial(n):
if n > 0:
return n * factorial (n-1)
else:
return 1

N = int(raw_input('Input N: ‘))
if N < 0:
print (’N should not be less than zero')
else:
print (factorial(N))

Никак не пойму логику работы. Значит ли, что функция работает как цикл, постоянно вычисляя факториал числа, меньшего на единицу, пока не дойдет до факториала нуля? Если так, то откуда программа “знает”, что факториал нуля равен единице (0! == 1)???
Кто знает, объясните, пожалуйста.
Firik
zmeelov
Функция вызывает сама себя до тех пор, пока N больше нуля. Она знает, что (0 == 1) вот отсюда
else:
return 1
zmeelov
Все равно не пойму. Т.е. если, функция дошла до n==0, происходит переход на else и фунция присваивает себе значение 1. А потом уже идет перемножение до того, пока функция не достигнет значения введенного N.
Я правильно понял?
py.user.next
zmeelov
Значит ли, что функция работает как цикл, постоянно вычисляя факториал числа, меньшего на единицу, пока не дойдет до факториала нуля?
Она работает не как цикл, а как лестница из функций, где каждая ступенька одинаковая. Вычисления начинаются, когда лестница построена до самой нижней ступеньки.
zmeelov
Спасибо за помощь всем неравнодушным.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB