作者tasukuchiyan (Tasuku)
看板Python
标题[问题] 重复带入函式
时间Mon Oct 19 15:12:43 2015
我看了一本书上的一个演算法後,照方法用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://webptt.com/cn.aspx?n=bbs/Python/M.1445238765.A.6F7.html
1F:→ mikapauli: 你写了2个print,a>0时会print(a-1)两次阿 10/19 16:12
2F:推 tiefblau: 呼叫完含式 会回去下一行继续跑啊 你查一下递回怎麽用吧 10/19 16:16
3F:→ alibuda174: 把else: pass改成else: print(a),删掉底下的print(a) 10/19 17:16
4F:推 Yshuan: 原PO充分证明了递回是stack的应用(?) 10/19 22:00
5F:→ tasukuchiyan: 感谢楼上几位,仔细研究後已经解决问题了 10/20 15:51