#设置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')
Python学习笔记 递归-斐波那契数列,汉诺塔
最新推荐文章于 2023-06-27 12:42:15 发布