[問題] 重複帶入函式

看板Python作者 (Tasuku)時間10年前 (2015/10/19 15:12), 編輯推噓2(203)
留言5則, 5人參與, 最新討論串1/1
我看了一本書上的一個演算法後,照方法用python寫時發現一個問題,不知道出在哪, 我將它簡化成以下的問題: def test(a): if a>0: a-=1 print(a,'\n','-') test(a) else: pass print(a) 輸入一個數字,當數字大於零時減一,然後重複帶入原函式,直到零。 執行帶入3: test(3) 結果: 2 - 1 - 0 - 0 0 1 2 跑到0時,應該要停止了,可是他繼續跑,結果最後答案是2 如果將重複帶入的方式改成while的話就沒問題: def test2(a): while a>0: a-=1 print(a,'\n','-') print(a) 一樣帶入3執行: test2(3) 結果: 2 - 1 - 0 - 0 最後答案是0,沒問題。 想問重複帶入函式的這方法問題出在哪,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.174.23.187 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1445238765.A.6F7.html

10/19 16:12, , 1F
你寫了2個print,a>0時會print(a-1)兩次阿
10/19 16:12, 1F

10/19 16:16, , 2F
呼叫完含式 會回去下一行繼續跑啊 你查一下遞迴怎麼用吧
10/19 16:16, 2F

10/19 17:16, , 3F
把else: pass改成else: print(a),刪掉底下的print(a)
10/19 17:16, 3F

10/19 22:00, , 4F
原PO充分證明了遞迴是stack的應用(?)
10/19 22:00, 4F

10/20 15:51, , 5F
感謝樓上幾位,仔細研究後已經解決問題了
10/20 15:51, 5F
文章代碼(AID): #1M99VjRt (Python)
文章代碼(AID): #1M99VjRt (Python)