Python----递归函数

# 兔子问题:
# 1 1 2 3 5 7 12
# 第一天1只兔子 第二天1只兔子   第三天2只兔子   第四天3只兔子   后面每天的兔子数等于前2天的兔子数之和

# 定义函数,计算第n天的兔子数
def rabbit(n):
    # 递归结束的条件:n=2
    # 第一天和第二天兔子数都是1
    if n == 1 or n == 2:
        return 1
    # 之后的兔子数等于前2天的数量
    else:
        return rabbit(n - 1) + rabbit(n - 2)


# 定义函数,计算1-100的和
# 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9
# 普通递归
def he(n):
    if n == 1:
        return 1
    return n + he(n - 1)

# 优化后的:尾递归
def he_1(n, total=1):
    if n == 1:
        return total
    else:
        return he_1(n - 1, total=total + n)


if __name__ == '__main__':
    # 递归函数: 在自己的函数里面调用自己
    # 一般的使用递归函数的话,都是找数学关系,然后进行递归
    print(rabbit(20))
    print('练习一:', he(100), he_1(100))
原文地址:https://www.cnblogs.com/Z-Queen/p/14726129.html