-2
我學習這個冪遞歸算法,它工作得很好。 但我不明白爲什麼這個工程? 因爲我希望總是返回1,1,1 ......如果n
甚至因爲沒有在return
繁殖。
當我嘗試recPower(3,2)
,並打印步驟因子的步驟,這將是這樣的:冪遞歸
但是,爲什麼3出來?
def recPower(a, n):
# raises a to the int power n
if n == 0:
return 1
else:
factor = recPower(a, n//2)
if n%2 == 0: # n is even
return factor * factor
else: # n is odd
return factor * factor * a
3是存在的,因爲1 * 1 * 3 == 3 – shuttle87
你的算法正好實現了這個:a **(2 * n)=(a ** n)*(a ** n)','a **(2 * n + 1)=(a ** n )*(a ** n)* a'。你究竟對此瞭解甚麼? – Julien
「因爲a不會在回報中增加」根據您的確切意思,我會說它在底部回報:'return factor * factor * a'。 – Evert