这节课主要讲解用递归的方法,实现汉诺塔的解答
对于游戏的玩法,我们可以简单分解为三个步骤:
1) 将前63个盘子从X移动到Y上。 2) 将最底下的第64个盘子从X移动到Z上。 3) 将Y上的63个盘子移动到Z上。
问题一:将X上的63个盘子借助Z移到Y上;
1) 将前62个盘子从X移动到Z上。 2) 将最底下的第63个盘子移动到Y上。 3) 将Z上的62个盘子移动到Y上。
问题二:将Y上的63个盘子借助X移到Z上。
1) 将前62个盘子从Y移动到X上。 2) 将最底下的第63个盘子移动到Z上。 3) 将X上的62个盘子移动到Y上。
用递归方法实现
#汉诺塔 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)#将最底下一个盘从x移动至z上 hanoi(n-1,y,x,z)#将y上的n-1个盘从y移动至z上 n = int(input('请输入汉诺塔的层数:')) hanoi(n,'A','B','C') ================= RESTART: C:\Users\ThinkPad\Desktop\test.py ================= 请输入汉诺塔的层数:5 A -->移动至 C A -->移动至 B C -->移动至 B A -->移动至 C B -->移动至 A B -->移动至 C A -->移动至 C A -->移动至 B C -->移动至 B C -->移动至 A B -->移动至 A C -->移动至 B A -->移动至 C A -->移动至 B C -->移动至 B A -->移动至 C B -->移动至 A B -->移动至 C A -->移动至 C B -->移动至 A C -->移动至 B C -->移动至 A B -->移动至 A B -->移动至 C A -->移动至 C A -->移动至 B C -->移动至 B A -->移动至 C B -->移动至 A B -->移动至 C A -->移动至 C使用递归编程求解以下问题:
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第三个人大2岁。问第三个人,又说比第二个人大2岁。问第2个人,说比第一个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大?
def age(n): if n == 1: return 10 else: return age(n-1) + 2 print('哈哈,我知道了,第五个人的年龄是 %d 岁,啵啵脆!' % age(5))转载于:https://www.cnblogs.com/wanbin/p/9514686.html
相关资源:JAVA上百实例源码以及开源项目