理解python递归函数
我对编码还不熟悉,并试图学习Python和递归函数。我有一个小程序如下:理解python递归函数,python,python-3.x,recursion,Python,Python 3.x,Recursion,我对编码还不熟悉,并试图学习Python和递归函数。我有一个小程序如下: def hi_recursive(remaining): # The base case print(remaining) if remaining == 0: return print('hi') # Call to function, with a reduced remaining count hi_recursive(remaining - 1) print(remaining) pri
def hi_recursive(remaining):
# The base case
print(remaining)
if remaining == 0:
return
print('hi')
# Call to function, with a reduced remaining count
hi_recursive(remaining - 1)
print(remaining)
print('bye')
hi_recursive(3)
这将导致输出:
3
hi
2
hi
1
hi
0
1
bye
2
bye
3
bye
我不明白变量剩余值在0之后是如何递增的,为什么要打印3次?它不应该在最后打印一次吗
如果你能帮我理解这一点,我将不胜感激。多谢各位
递归函数是通过自引用表达式根据自身定义的函数。这意味着函数将继续调用自身并重复其行为,直到满足某个条件才能返回结果
多次执行bye打印的原因是,当您在函数中递归函数结束时,调用函数内部的原始函数仍然需要完成。
如果你想在结束时打印你的bye,你需要把它放在函数返回之前。另外,还有一个额外的print剩余,它可以将数字打印三次,因为您要对函数hi\u recursiveremaining进行三次检查
def hi_recursive(remaining):
# The base case
print(remaining)
if remaining == 0:
print('bye')
return
print('hi')
# Call to function, with a reduced remaining count
hi_recursive(remaining - 1)
hi_recursive(3)
查看此链接以了解更多信息,因为您先打印它,然后才能获得它 这个密码是你的 def hi_递归剩余: 基本情况 打印此行的剩余部分 如果剩余==0:那么这一行 回来 打印“嗨” 调用函数,减少剩余计数 hi_-1 打印剩余 打印“再见” 你好! 使用这些代码之一 def hi_递归剩余: 基本情况 如果剩余==0: 回来 打印剩余 打印“嗨” 调用函数,减少剩余计数 hi_-1 打印剩余 打印“再见” 你好! 或 def hi_递归剩余: 基本情况 如果剩余=1: 回来 打印剩余 打印“嗨” 调用函数,减少剩余计数 hi_-1 打印剩余 打印“再见” 你好! 在您的代码中: def hi_递归剩余: 打印剩余 如果剩余==0:target 回来 打印“嗨” 调用函数,减少剩余计数 hi_-1 打印剩余 打印“再见” 你好! 您的最小打印号码是在目标行中确定的。 换句话说,若你们写剩余==0,你们的最小打印数是0
您可以使用VScode Debugger或PyCharm Debugger查看逐行运行您的代码使用此了解:请添加一些有关此代码工作原理的详细信息,以便他将来可以更好地复制此代码。我已发送了一个新的答案。切记,这就像一道选择题。说选择A而不是C没有帮助。您的代码可能是正确的,但如果他不知道为什么他很难复制前进,请查看其他答案进行比较。