递归算法
阶乘
n!=nn-1n-2*…1
def fac(n):
"""
求某数的阶乘值
:param n:某数
:return:阶乘
"""
# 递归的结束:
if n == 1:
return 1
return n * fac(n - 1)
# fac(5)
# print(fac(5))
斐波那契数
1 1 2 3 5 8…
def fibona(n):
"""
求斐波那契数
:param n:第几个
:return:第几个斐波那契数
"""
if n == 1 or n == 2:
return 1
# 求前一个和前前一个的斐波那契数值
return fibona(n - 1) + fibona(n - 2)
# print(fibona(10))
# 获取递归的限定层级
# import sys
# # print(sys.getrecursionlimit())
# sys.setrecursionlimit(999999)
计算不死兔问题
def half_year_rabbit(half_years: int):
# 直接给答案
if half_years == 0:
return 0, 0, 1
# 计算前半年的兔子数
a, b, c = half_year_rabbit(half_years - 1)
# 计算当前半年的兔子数
a, b, c = a + b, c, a
return a, b, c
print(half_year_rabbit(200))