[問題]一個 遞迴的 return問題

看板Python作者 (skj)時間8年前 (2016/04/07 20:44), 8年前編輯推噓0(0015)
留言15則, 4人參與, 最新討論串1/2 (看更多)
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

04/07 20:45, , 1F
這個超難 我看不出來有什麼不一樣
04/07 20:45, 1F

04/07 20:46, , 2F
為啥要關燈阿??? 又不是什麼秘密 @_@
04/07 20:46, 2F

04/07 20:49, , 3F
這樣有終止條件嗎?
04/07 20:49, 3F

04/07 20:49, , 4F
不好意思,現在看的到了嗎?手機貼code不知為何自動關燈
04/07 20:49, 4F

04/07 20:54, , 5F
你這樣只會有10的輸出吧? 但你要寫的是階層
04/07 20:54, 5F
※ 編輯: sunnoset (111.248.214.165), 04/07/2016 20:59:02

04/07 21:03, , 6F
你改print(f(10))就知道差別在哪了
04/07 21:03, 6F

04/07 21:09, , 7F
謝謝,前者print會印None,那麼在系統資源上,會否有差
04/07 21:09, 7F

04/07 21:09, , 8F
別呢(假設i初始參數很大)?
04/07 21:09, 8F

04/07 21:12, , 9F
差別在於後者要等到先跑到f(0)才會陸續把其他值算出來
04/07 21:12, 9F

04/07 21:14, , 10F
差異很大喔...遞迴就要先跑到有解才會去回推前面的值
04/07 21:14, 10F

04/07 21:15, , 11F
你第一個做法就是單純的f(i-1) 而已 所以需要做的動作只
04/07 21:15, 11F

04/07 21:15, , 12F
有確定i==0 不是就print(i)而已
04/07 21:15, 12F

04/07 21:17, , 13F
04/07 21:17, 13F

04/07 21:18, , 14F
看一下這篇你就瞭了
04/07 21:18, 14F

04/07 22:50, , 15F
謝謝您
04/07 22:50, 15F
文章代碼(AID): #1N1bOxif (Python)
文章代碼(AID): #1N1bOxif (Python)