011 递归

一:简单使用

1.需求

  写一个简单的阶乘。

2.程序

  这个程序主要的功能是,通过例子理解阶乘

1 def factorial(n):
2     if n==1:
3         return 1
4     else:
5         return n*factorial(n-1)
6 
7 fact=factorial(5)
8 print(fact)

3.效果

  

二:菲波那切数列

1.说明

  1、1、2、3、5、8、13、21

  在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)

2.程序

1 ##1、1、2、3、5、8、13、21
2 def fibonacci(n):
3     if n==1 or n==2:
4         return 1
5     else:
6         return fibonacci(n-2)+fibonacci(n-1)
7 
8 fib=fibonacci(8)
9 print(fib)

3.效果、

  

三:汉诺塔

1.抽象后的做法

  

2.思路

  这里以函数的形参为出发点。

  将三个柱子(初始柱,过渡柱,目标柱)分别标记为A,B,C

  1.将初始柱上除最下面的圆盘以外的圆盘全部搬到过渡柱上;

  2.将初始柱上最下面的圆盘搬到目标柱上;

  3.将过渡柱上的圆盘全部搬到目标柱上。

3.程序

 1 ##
 2 def hanoiTower(n,a,b,c):
 3     if n==1:
 4         print(a,'-->' ,c)
 5         return
 6     else:
 7         hanoiTower(n-1,a,c,b)
 8         print(a,'-->' ,c)
 9         hanoiTower(n-1,b,a,c)
10 
11 hanoiTower(3,'X','Y','Z')

4.效果

  

原文地址:https://www.cnblogs.com/juncaoit/p/9535057.html