[问题] 重复带入函式

楼主: 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