我试图查看这个函数的递归跟踪,但是为什么我要获得“无”输出?
def fnc(k):
if k == 0:
return 0
fnc(k-1)
fnc(k-1)
fnc(k-1)
fnc(k-1)
发布于 2021-04-02 21:45:24
实际上,通过手工评估代码中的小参数,您的问题非常容易识别。假设您将k = 1
传递给fnc
def fnc(k):
# k == 1 != 0, so we skip the return
if k == 0:
return 0
# Now we call fnc four times with k - 1 = 0 as an argument
# All four function calls will return 0
# But we don't use the returned value in any way (no assignment, no return)
fnc(k - 1)
fnc(k - 1)
fnc(k - 1)
fnc(k - 1)
# The function ends without returning anything, therefore the return value is None
我不知道您想要实现什么,但是如果您希望返回大小写值,则可以这样做:
def fnc(k):
if k == 0:
return 0
return fnc(k-1)
请比较这两种功能,也许可以手动完成,并试着理解到底是怎么回事。
https://stackoverflow.com/questions/66925499
复制相似问题