看板 Python 關於我們 聯絡資訊
def f(i): if i == 0: return print(i) f(i-1) f(10) 和 def f(i): if i == 0: return print(i) return f(i-1)#加上return f(10) 執行結果一樣 10 9 8 7 6 5 4 3 2 1 但我好奇在背景是否有差別呢? 謝謝指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.248.214.165 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1460033083.A.B29.html ※ 編輯: sunnoset (111.248.214.165), 04/07/2016 20:48:00
checkIO: 這個超難 我看不出來有什麼不一樣04/07 20:45
Jiummay: 為啥要關燈阿??? 又不是什麼秘密 @_@04/07 20:46
checkIO: 這樣有終止條件嗎?04/07 20:49
sunnoset: 不好意思,現在看的到了嗎?手機貼code不知為何自動關燈04/07 20:49
checkIO: 你這樣只會有10的輸出吧? 但你要寫的是階層04/07 20:54
※ 編輯: sunnoset (111.248.214.165), 04/07/2016 20:59:02
checkIO: 你改print(f(10))就知道差別在哪了 04/07 21:03
sunnoset: 謝謝,前者print會印None,那麼在系統資源上,會否有差 04/07 21:09
sunnoset: 別呢(假設i初始參數很大)? 04/07 21:09
MOONY135: 差別在於後者要等到先跑到f(0)才會陸續把其他值算出來 04/07 21:12
MOONY135: 差異很大喔...遞迴就要先跑到有解才會去回推前面的值 04/07 21:14
MOONY135: 你第一個做法就是單純的f(i-1) 而已 所以需要做的動作只 04/07 21:15
MOONY135: 有確定i==0 不是就print(i)而已 04/07 21:15
MOONY135: http://goo.gl/w1OFHX 04/07 21:17
MOONY135: 看一下這篇你就瞭了 04/07 21:18
sunnoset: 謝謝您 04/07 22:50