作者sunnoset (skj)
看板Python
標題[問題]一個 遞迴的 return問題
時間Thu Apr 7 20:44:4
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://webptt.com/m.aspx?n=bbs/Python/M.1460033083.A.B29.html
※ 編輯: sunnoset (111.248.214.165), 04/07/2016 20:48:00
1F:→ checkIO: 這個超難 我看不出來有什麼不一樣04/07 20:45
2F:→ Jiummay: 為啥要關燈阿??? 又不是什麼秘密 @_@04/07 20:46
3F:→ checkIO: 這樣有終止條件嗎?04/07 20:49
4F:→ sunnoset: 不好意思,現在看的到了嗎?手機貼code不知為何自動關燈04/07 20:49
5F:→ checkIO: 你這樣只會有10的輸出吧? 但你要寫的是階層04/07 20:54
※ 編輯: sunnoset (111.248.214.165), 04/07/2016 20:59:02
6F:→ checkIO: 你改print(f(10))就知道差別在哪了 04/07 21:03
7F:→ sunnoset: 謝謝,前者print會印None,那麼在系統資源上,會否有差 04/07 21:09
8F:→ sunnoset: 別呢(假設i初始參數很大)? 04/07 21:09
9F:→ MOONY135: 差別在於後者要等到先跑到f(0)才會陸續把其他值算出來 04/07 21:12
10F:→ MOONY135: 差異很大喔...遞迴就要先跑到有解才會去回推前面的值 04/07 21:14
11F:→ MOONY135: 你第一個做法就是單純的f(i-1) 而已 所以需要做的動作只 04/07 21:15
12F:→ MOONY135: 有確定i==0 不是就print(i)而已 04/07 21:15
14F:→ MOONY135: 看一下這篇你就瞭了 04/07 21:18
15F:→ sunnoset: 謝謝您 04/07 22:50