def g(n):
"""Return the value of G(n), computed recursively.
>>> g(1)
1
>>> g(2)
2
>>> g(3)
3
>>> g(4)
10
>>> g(5)
22
"""
if n<=3:
return n
else:
return g(n-1)+2*g(n-2)+3*g(n-3)
Как это преобразовать в итеративную функцию? До сих пор я не понимал, что писать рекурсивную функцию иногда проще, чем писать итеративный. Причина, по которой это так сложно, я думаю, потому что я не знаю, какую операцию выполняет функция. В рекурсивном, это не очевидно, что происходит.Python: преобразовать эту рекурсивную функцию в итеративный
Я хочу написать итеративное определение, и я знаю, что мне нужно использовать цикл while, но каждый раз, когда я пытаюсь записать его, я добавляю дополнительные параметры в g_iter (n) (когда их должно быть только одно) или я делаю рекурсивный звонок. Может кто-нибудь хотя бы начать меня по правильному пути? Вам не нужно давать мне полное решение.
FYI: Мы не узнали о слишком распространенном «стеке», которое я вижу на всех этих страницах. Я предпочел бы держаться подальше от этого.
def g_iter(n):
"""Return the value of G(n), computed iteratively.
>>> g_iter(1)
1
>>> g_iter(2)
2
>>> g_iter(3)
3
>>> g_iter(4)
10
>>> g_iter(5)
22
"""
"*** YOUR CODE HERE ***"
О'кей ... Итак, это только первый материал среднего класса, и мы не должны знать ** списки ** или ** для цикла ** (только пока). Есть ли более простой способ, чем @falsetru и @thefourtheye? – awalllllll