# 兔子问题:
# 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))