递归函数
- 递归:函数直接或者间接的调用自己
- 递归分两个过程:
- 递归需要注意
- 是以资源换取得编写速度
def funa(n):
print("I am hua")
return None
def funb(n):
funa(100)
print("I am zhang")
return None
funb(100)
I am hua
I am zhang
def fun_a(n):
print(n)
if n == 1:
return n
return n * fun_a(n-1)
rst = fun_a(5)
print("f(5) =", rst)
5
4
3
2
1
f(5) = 120
def fib(n):
if n == 1 or n == 2:
return 1
return fib(n-1) + fib(n-2)
rst = fib(10)
print("rst = ",rst)
rst = 55
a = 'A'
b = 'B'
c = 'C'
def hano(a,b,c,n):
if n == 1:
print("{}-->{}".format(a,c))
return None
if n == 2:
print("{}-->{}".format(a,c))
print("{}-->{}".format(a,b))
print("{}-->{}".format(b,c))
return None
hano(a,c,b,n-1)
print("{}-->{}".format(a,c))
hano(b,a,c,n-1)
hano(a, b, c, 5)
A-->B
A-->C
C-->B
A-->C
B-->C
B-->A
A-->C
A-->B
C-->A
C-->B
B-->A
C-->B
A-->B
A-->C
C-->B
A-->C
B-->C
B-->A
A-->C
B-->A
C-->A
C-->B
B-->A
B-->C
A-->B
A-->C
C-->B
A-->C
B-->C
B-->A
A-->C