请参阅此功能:-
def beej(v):
v = sum(map(int, list(str(v))))
if len(str(v)) <=1:
print("printed: {}".format(v))
return v
beej(v)
#outputs
>>> beej(23)
printed: 5
5 # returned
>>> beej(4221)
printed: 9
9 # returned
>>> beej(422199)
printed: 9 #no returned value
>>> beej(999)
printed: 9 #no returned value
所以;它只是为了某些价值而工作;而不是为了别人。我想知道这背后的原因;以及如何找到这些隐藏的错误。
答案 0 :(得分:1)
您在递归调用中缺少return语句:
def beej(v):
v = sum(map(int, list(str(v))))
if len(str(v)) <= 1:
print("printed: {}".format(v))
return v
return beej(v)
如果对v
的第一次调用(即没有递归调用)产生一位数的总和,那么您当前的代码只会返回beej
。