gdutwyg / blog

使用issues记录笔记
0 stars 1 forks source link

尾递归优化 #48

Open gdutwyg opened 5 years ago

gdutwyg commented 5 years ago
# 普通的递归
def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)

解决递归调用栈溢出的方法是通过尾递归优化

# 改造成尾递归
# 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式,通过参数来处理
def fact(n):
    return fact_iter(n, 1)

def fact_iter(num, product):
    if num == 1:
        return product
    return fact_iter(num - 1, num * product)

递归函数