理解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

我对编码还不熟悉,并试图学习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)
 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没有帮助。您的代码可能是正确的,但如果他不知道为什么他很难复制前进,请查看其他答案进行比较。