您的位置:首页 > 编程语言 > Python开发

Python学习笔记 递归-斐波那契数列,汉诺塔

2015-04-04 07:22 302 查看
#设置python允许的最大递归次数(默认是100)
import sys
sys.setrecursionlimit(1000)

#求阶乘
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)

print(factorial(4))

#斐波那契数列,递归实现
def Fab2(n):
if n <= 2:
return 1
else:
return Fab2(n - 1) + Fab2(n - 2)

print(Fab2(10))

#汉诺塔
#思路:要想完成汉诺塔,必须先把最大的一个盘子放到目标柱子,之后把剩下的移动到最大盘子之上
#通过上述思路形成递归
def hanoi(n, x, y, z):
'n为多少个盘子.三根柱子为x,y,z。目标盘子为z,起始盘子为x'
if n == 1:
print(x, ' --> ', z)
else:
#将前n - 1个盘子从A移动到B上
hanoi(n - 1, x, z, y)
#将第n个(最大的)移动到C上
print(x, ' --> ', z)
#将B上的n - 1个盘子移动到C上
hanoi(n - 1, y, x, z)

hanoi(4, 'X', 'Y', 'Z')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: