汉罗塔hanoi问题之递归
来源:互联网 发布:音箱测试软件wavetool 编辑:程序博客网 时间:2024/06/10 07:57
三根柱子A、B、C,开始时A柱上有n个盘子,盘子大小不等,大的在下、小的在上。
此时把这n个盘子从A柱移到C柱上,但每次只允许移动一个盘子,且在移动过程序中每根柱子上都始终保持大盘在下、小盘在上。
在移动过程中可以借助B柱,要求:正整数n由键盘输入。
Java实现:
[java] view plain copy print?
import java.util.Scanner;
public class Test160916 {
public static void main(String[] args) {
System.out.println("请输入A塔上盘子的个数");
System.out.println("请输入一个整数后按回车键:");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
hanoi(n, 'A', 'B', 'C');
scanner.close();
}
public static void move(char x, int n, char y){
System.out.println("把编号为["+n+"]盘从"+x+" 移动到 "+y);
}
public static void hanoi(int n,char A,char B,char C){
if(n==1){
move(A,1,C);
}else{
/* 步骤
* 第一步,移走最上面的盘子,剩下一个最大的
* 第二步,把最大的盘子移到目标盘
* 第三步,移回第一步的盘子到目标盘
*/
hanoi(n-1,A,C,B);//借助 【C】 把n-1个盘从【A】移到 【B】
move(A,n,C);//把最大的盘子移动到【C】
hanoi(n-1,B,A,C);//借助 【A】 把n-1个盘从【B】移到 【C】
}
}
}
输出结果:
请输入A塔上盘子的个数
请输入一个整数后按回车键:
3
把编号为[1]盘从A 移动到 C
把编号为[2]盘从A 移动到 B
把编号为[1]盘从C 移动到 B
把编号为[3]盘从A 移动到 C
把编号为[1]盘从B 移动到 A
把编号为[2]盘从B 移动到 C
把编号为[1]盘从A 移动到 C
C语言实现:
[cpp] view plain copy print?
#include <stdio.h>
void move(char x, int n, char y){
printf("把编号为[%d]盘从 %c 移动到 %c \n",n,x,y);
}
void hanoi(int n,char A,char B,char C){
if(n==1){
move(A,1,C);
}else{
/* 步骤
* 第一步,移走最上面的盘子,剩下一个最大的
* 第二步,把最大的盘子移到目标盘
* 第三步,移回第一步的盘子到目标盘
*/
hanoi(n-1,A,C,B);//借助 【C】 把n-1个盘从【A】移到 【B】
move(A,n,C);//把最大的盘子移动到【C】
hanoi(n-1,B,A,C);//借助 【A】 把n-1个盘从【B】移到 【C】
}
}
int main() {
int n;
printf("请输入A塔上盘子的个数\n");
printf("请输入一个整数后按回车键:\n");
scanf("%d",&n);
hanoi(n, 'A', 'B', 'C');
return 0;
}
输出结果:
请输入A塔上盘子的个数
请输入一个整数后按回车键:
3
把编号为[1]盘从 A 移动到 C
把编号为[2]盘从 A 移动到 B
把编号为[1]盘从 C 移动到 B
把编号为[3]盘从 A 移动到 C
把编号为[1]盘从 B 移动到 A
把编号为[2]盘从 B 移动到 C
把编号为[1]盘从 A 移动到 C
阅读全文
0 0
- 汉罗塔hanoi问题之递归
- 递归法求解汉罗塔hanoi问题
- 递归-Hanoi塔问题
- Hanoi问题递归求解
- 递归---Hanoi塔问题
- 递归之汉诺塔(Hanoi)
- 递归算法之Hanoi(汉诺塔)问题学习
- 递归学习简单的小例子之hanoi塔问题
- 汉诺塔问题 hanoi(递归)
- 递归栈(hanoi问题)
- 算法-Hanoi塔问题+递归
- 【递归】排列问题,整数划分问题,Hanoi
- 递归问题,实例3Hanoi问题
- hanoi塔问题(经典递归)
- 栈和递归的应用:Hanoi问题
- 递归法解决Hanoi塔问题
- n阶Hanoi塔问题 递归实现
- 简单递归—Hanoi(汉诺塔问题)
- LeetCode 66 — Plus One( Java 递归)
- SCP 从堡垒机DUMP文件 密码错误解决办法
- python篇4_集合和字典
- Azkban上传文件报错installation Failed.Error chunking
- DLNA介绍
- 汉罗塔hanoi问题之递归
- linux设置ssh免密登录
- node.js中的path.resolve()
- “智能问诊”项目——数据获取(3)
- H.264探究
- python selenium的使用、文件下载、登录跳转问题和简单封装
- 1.10. Decision Trees
- ContentSizeFitter组件
- $.ajax方法详解