# fun_a表示计算阶乘# 利用数学公式deffun_a(n):print(n)# 递归一定要有结束条件# 1的阶乘等于1if n ==1:return1return n*fun_a(n-1)
b = fun_a(5)print("f(5)=",b)# 层层调用,层层return
5
4
3
2
1
f(5)= 120
斐波那契数列
f(n) = f(n-1) + f(n-2), n >= 3
f(n) = 1, n = {1,2}
# 斐波那契数列deffib(n):if n ==1or n ==2:return1return fib(n-1)+ fib(n-2)
res = fib(10)print("res=",res)
res= 55
# 汉诺塔# 规则:将a柱上原片转移到另一个柱子上,借助其他柱子时不能出现大圆片在小圆片上方的情况
a ="A"
b ="B"
c ="C"defhano(a,b,c,n):if n ==1:print("{}-->{}".format(a,c))returnNoneif n ==2:print("{}-->{}".format(a,c))print("{}-->{}".format(a,b))print("{}-->{}".format(b,c))returnNone
hano(a,c,b,n-1)print("{}-->{}".format(a,c))
hano(b,a,c,n-1)
hano(a,b,c,1)print("-----分割线-----")
hano(a,b,c,3)