采用递归实现裴波那切数列和汉诺塔游戏

#1.裴波那切数列: 1、1、2、3、5、8、13、21、34、55、89、144
def fx(n):
  if n == 1 or n ==2:
     return 1
  else:
     return fx(n-1)+fx(n-2)

运行结果如下:
>>> fx(12)
144

#2.整数的阶乘
def recursion(n)
   if n == 1:
      return 1
   else 
      return n*recursion(n-1)
  
number = int(input('请输入一个整数:'))
result = recursion(number)
print "%d 的阶乘为: %d" % (number,result) 

输入5,运行结果如下:  
>>> 
请输入一个整数:5
5 的阶乘为: 120
 
#3.汉诺塔游戏
def hanoi(n,x,y,z):
   if n == 1:
     print x + ' --> ' + z
   else:
     hanoi(n-1,x,z,y)      #将n-1个盘子从x移到y上
 print x + ' --> ' + z #将第n-1个盘子从x移到z上
 hanoi(n-1,y,x,z)      #将n-1个盘子从y移到z上

numbers = int(input("请输入盘子的数量:"))
hanoi(numbers,'X','Y','Z')

输入3,运行结果如下:
>>> 
请输入盘子的数量:3
X --> Z
X --> Y
Z --> Y
X --> Z
Y --> X
Y --> Z

 

posted @ 2017-11-07 20:18  碧水幽幽泉  阅读(530)  评论(0编辑  收藏  举报