python递归函数,为什么他会不断的返回

def foo(n):
if n <= 0:
return
print("Hello")
foo(n-1)
print("Bye")

foo(5)


def foo(n):
    if n <= 0:
        print("Bye")
        return None
    print("Hello")
    return foo(n-1)

foo(5)

这样写试试,return自带跳出自定义函数的方法,所以你的return要在执行类语句之后

因为一直到n小于等于0的时候,才会返回None,也就相当于结束foo函数
而n>0时,会递归调用函数,每调用一次,经过一轮的foo递归,就会输出一次bye

def foo(n):
    if n <= 0:
        return
        print("Hello")
    foo(n-1)
    print("Bye")

foo(5)

img