我需要帮助用Python来理解return语句及其在这个递归语句中的角色

我需要帮助用Python来理解return语句及其在这个递归语句中的角色,python,recursion,printing,return,Python,Recursion,Printing,Return,不,这不是家庭作业,但在我们的考试学习指南上。我需要理解return语句和递归所扮演的角色。我不明白为什么函数在x=1后没有中断 def thisFunc(x): print(x) if x>1: result=thisFunc(x-1) print(result) return x+1 对不起,我知道这有多简单,但我真的需要一些帮助。可能是我找不到解释的原因…因为它太简单了 编辑:为什么它会打印出它的功能,以及为什么x的值在最

不,这不是家庭作业,但在我们的考试学习指南上。我需要理解return语句和递归所扮演的角色。我不明白为什么函数在x=1后没有中断

def thisFunc(x):
    print(x)
    if x>1:
         result=thisFunc(x-1)
         print(result)
    return x+1
对不起,我知道这有多简单,但我真的需要一些帮助。可能是我找不到解释的原因…因为它太简单了


编辑:为什么它会打印出它的功能,以及为什么x的值在最后?抱歉,如果我问得太多,我只是感到沮丧

当您使用值
n>1
输入函数时,它会打印当前值,然后使用
n-1
调用它自己。当内部函数返回时,它返回值
n-1+1
,该值正好是
n
。因此,函数将输出值
n
两次,一次在内部递归之前,一次在内部递归之后

如果基本情况为
n==1
,则函数只打印一次
1
,不会再次调用它自己(因此不会将
结果
返回打印)。相反,它只是返回,因此为什么
1
只打印一次

把它想象成洋葱

调用thisFunc(n)将导致

n
# what ever the output (via print) of thisFunc(n-1) is
n 
我不明白为什么函数在x=1后没有中断

def thisFunc(x):
    print(x)
    if x>1:
         result=thisFunc(x-1)
         print(result)
    return x+1
但它确实:

>>> ================================ RESTART ================================
>>> x = 1
>>> def thisFunc(x):
    print("Function called on x-value: ", x)
    if x > 1:
        result = thisFunc(x-1)
        print(result)
    return x+1

>>> thisFunc(x)
Function called on x-value:  1
2
>>>
编辑:为什么它会打印出它的功能,以及为什么x的值在最后? 嗯,它会打印出来,因为是你告诉它的。在遍历函数时,尝试跟随x的值(“x是1,1不大于1;返回1+1。好。[新案例]x是2,2大于1…”等等)

返回
递归
是编程的重要组成部分;return语句指定函数的结尾(即使您可能还有几行代码),并且它们还将数据传递回任何要求返回的对象。在你的例子中,你会问“如果给定这些规则,当x为1时会发生什么?”;返回的数据就是您的答案

递归只是让函数调用自己的问题,如果它(您)需要的话。您只需告诉程序“嘿,只要x大于1,就对它调用这个函数[恰好是最初调用的同一个函数],让它做它自己的事情”。为了更好地理解您的函数,我建议您在函数内部的第一个
print
语句中添加一行
“x-value:“
”函数,或者至少添加一些内容,让您能够识别哪个打印行是
x
,哪个是
result


要更深入地解释递归,我建议缩进中也有一个错误,但这可能是问题中的错误,而不是运行函数时的错误。缩进中的错误在哪里?在每次更改时,用堆栈上的帧的视觉表示绘制执行图。您可以使用块序列…每次调用thisFunc时,为新帧绘制一个多块,每次thisFunc返回一个帧时,弹出一个帧,因此您应该少绘制一个。通过这种方式跟踪每次调用的执行情况。函数在任何时候都不会“中断”,但您无法可视化流,因为它正在向外扩展,而不是在更平坦的结构中迭代。有关这类内容的信息太多,请查找SICP。@Matt Whipple,当我检查函数
thisFunc(1)
时,返回我期望的结果:2