【发布时间】:2021-05-16 18:49:51
【问题描述】:
在ideone有一个关于代码实现的不寻常请求:
n = 42
new= []
m = 0
def convert(n,m):
print "round #:", m,"n :", n
a = ((n+1) % 3)-1
if n:
new.append(a); print 'new :', new
print 'call convert(' (n+1)//3,',',m+1,'):',convert((n+1)//3,m+1)
print 'after convert(' , n, ',' ,m, ')','\n'
else:
print 'n==',n, 'new: ::: ', new,'\n\n',
return new, n
print convert(n,m), "<<---- None returned ? "
我不知道为什么下面的输出中会打印“无”。输出 'None' 打印在两个地方(案例):
案例#1。 print '转换后(' , n, ',' ,m, ')','\n'
案例#2。 print convert(n,m), "
我完全不清楚为什么如果“n = 0”的默认情况具有列表“新”的正确值,那么在情况#2 中如何返回“无”。
据我说,'new' 内容应该打印在 case #2 中。
更令人困惑的是:为什么 case #1 对于 'n' 的非零值每次都返回 'None'?
根据我的说法,案例 #1 不应该打印“无”。
【问题讨论】:
-
这能回答你的问题吗? Why does my recursive function return None?