python7:函数:递归

函数自己调用自己

def recursion():

   return recursion()

这样的函数式调用不了的,因为没有出口

递归必须有出口

设置递归深度:

import sys

sys.setrecursion(100)

举例:

def factor(n):
    if n==1:
        return 1
    else:
        return n*factor(n-1)

python7:函数:递归

斐波那契额数列

所经过的月数

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

 

汉诺塔问题:

python7:函数:递归

对于游戏的玩法,我们可以简单分解为三个步骤
将前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')