作者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/cn.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