2014-10-16 6 views
-4
def fudz(n): 
    if n <= 2: 
     return 1 
    print("nom" * n) 
    return fudz(n-1) + fudz(n//2) 

result = fudz(4) 

Может кто-нибудь дать мне шаг за шагом этой функции?Как работают возвращаемые значения?

+0

Обратите внимание на * рекурсию *. – alex

+0

Это рекурсивная функция, если это вообще помогает ;-). – mgilson

+0

Нет, но когда вы проходите через него и имеете конкретные вопросы - мы можем с этим помочь. –

ответ

1

Это рекурсивная функция, что означает, что она вызывает экземпляр самого себя в упрощенном экземпляре проблемы, пока не попадет в базовый регистр, для которого он уже знает ответ. Помните, что любой вызов функции происходит в собственном стеке стека, поэтому он будет иметь собственное значение для n.

Вы можете пройтись через него самостоятельно. Во-первых, подумайте о том, что произойдет, когда n==2. Тогда подумайте о n==3 и увеличьте n, пока это не будет иметь для вас смысл.

Смежные вопросы