[問題] 重複帶入函式

作者: tasukuchiyan (Tasuku)   2015-10-19 15:12:43
我看了一本書上的一個演算法後,照方法用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,沒問題。
想問重複帶入函式的這方法問題出在哪,謝謝。
作者: mikapauli (桜花)   2015-10-19 16:12:00
你寫了2個print,a>0時會print(a-1)兩次阿
作者: tiefblau (tiefblau)   2015-10-19 16:16:00
呼叫完含式 會回去下一行繼續跑啊 你查一下遞迴怎麼用吧
作者: alibuda174 (阿哩不達)   2015-10-19 17:16:00
把else: pass改成else: print(a),刪掉底下的print(a)
作者: Yshuan (倚絃)   2015-10-19 22:00:00
原PO充分證明了遞迴是stack的應用(?)
作者: tasukuchiyan (Tasuku)   2015-10-20 15:51:00
感謝樓上幾位,仔細研究後已經解決問題了

Links booklink

Contact Us: admin [ a t ] ucptt.com