什么是递归尾调用:
递归调用放在函数结尾
区别:
def fac(n):
if n == 0:
return 1
else:
return n*fac(n - 1)
def print_fa(n):
if n > 0:
print_fa(n-1)
print(n)
print_fa(10) #结果:1到10
def fac(n):
if n == 0:
return 1
else:
return n*fac(n - 1)
def print_fa(n):
if n > 0:
print(n)
print_fa(n-1)
print_fa(10)#结果 10 到 1
可见 进去递归后, 开始入栈, 递归后面的函数暂时不执行,
出栈时 才会执行
尾递归的优点:可以优化 防止爆栈(然鹅我现在 还不是很清楚 )