python7:函数:递归
函数自己调用自己
def recursion():
return recursion()
这样的函数式调用不了的,因为没有出口
递归必须有出口
设置递归深度:
import sys
sys.setrecursion(100)
举例:
def factor(n):
if n==1:
return 1
else:
return n*factor(n-1)
斐波那契额数列
所经过的月数 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
兔子的总对数 |
1 |
1 |
2 |
3 |
5 |
8 |
13 |
21 |
34 |
55 |
89 |
144 |
从3项开始,每两项相除,越往后,越接近0.618 黄金分割比例 ,代替黄金分割
1,当n=1
F(n) = 1,当n=2
F(n-1)+F(n-2),当n>2
汉诺塔问题:
•对于游戏的玩法,我们可以简单分解为三个步骤
–将前63个盘子从X移动到Y上。
–将最底下的第64个盘子从X移动到Z上。
–将Y上的63个盘子移动到Z上。
•问题一:将X上的63个盘子借助Z移到Y上;
•问题二:将Y上的63个盘子借助X移到Z上。
•问题一(“将X上的63个盘子借助Z移到Y上”)拆解为:
–将前62个盘子从X移动到Z上。
–将最底下的第63个盘子移动到Y上。
–将Z上的62个盘子移动到Y上。
•问题二(“将Y上的63个盘子借助X移到Z上”)拆解为:
•将前62个盘子从Y移动到X上。
•将最底下的第63个盘子移动到Z上。
•将X上的62个盘子移动到Y上。
def nano(n,x,y,z):
if n==1:
print(x,'---->',z)
else:
nano(n-1,x,z,y)
print(x,'---->',z)
nano(n-1,y,x,z)
nano(3,'a','b','c')