汉诺塔的递归应用
来源:互联网 发布:枪神纪刷枪软件2016 编辑:程序博客网 时间:2024/06/05 02:25
声明:发博客只是为了个人的学习,很欢迎并且也希望得到各位大神的指点,如果有萌新看到这篇文章,如果我发的这些东西能够帮助到您的话,我很开心
所谓的汉诺塔问题是说假设有三个塔,其中第一个塔内有N个由小到大的圆盘,由上到下地依次叠好,如果要将其中的圆盘按照排列方式移到三个塔上,且需要遵循以下的规则:
1.一次只能搬一个,且只能搬最上面的
2.大的圆盘不能叠加到小圆盘上
在移动的过程中,可用第2个做为中继站,试问如何用程序输出所有的移动步骤?
如果你对此递归有些陌生的话,不妨先来熟悉一下递归
首先,我们用一个简单的例子用说一下递归
假设一个人是16岁,一共有五个人,每一个都比前一个大2岁,求第五个人的年龄
#include<stdio.h>
int old(int x)
{
int n;
if(x==1)
return n=16;
else
return n=2+old(x-1);
}
main(void)
{
printf("%d\n",old(5));
}
聪明的你一定能看懂了这个简单的递归,好,下面让我们开始做这道题汉诺塔题,开始巩固和练习
code:
#include<stdio.h>
int tower[3]={1,2,3};
void swap(int x,int begin,int mid,int end)
{
if(x==1)
printf("move %d plate from %d tower to %d tower\n",x,tower[begin],tower[end]);
else
{
swap(x-1,begin,end,mid);
printf("move %d plate from %d tower to %d tower\n",x,tower[begin],tower[end]);
swap(x-1,mid,begin,end);
}
}
main(void)
{
int i;
scanf("%d",&i);
swap(i,0,1,2);
}
- 汉诺塔的递归应用
- 递归和递归的应用
- [容易] 递归的应用:改进的汉诺塔
- 递归的经典应用----汉诺塔问题
- 递归的经典应用----汉诺塔问题
- 汉诺塔——递归的应用
- 递归算法的应用
- 递归的应用
- 递归的应用
- 递归的应用
- 递归的应用
- 递归函数的应用
- 递归函数的应用
- 递归函数的应用
- 递归的简单应用
- 递归的一种应用
- 递归的应用
- 简单的递归应用
- 二叉树的存储结构
- Spring学习篇:AOP知识整理
- AVL的c++详解——插入
- (0054)iOS开发之制作静态库详解
- Java实现棋盘格子走法
- 汉诺塔的递归应用
- Java设计模式-01单例模式
- struts2生成随机验证码图片
- linux查看可执行代码或库是32还是64bit,还是都兼容
- 在mysql日志中输出错误sql语句
- /////*Julia*/////这大概可以叫做笔记?
- AVL的c++详解——删除
- 使用struts2的token机制和cookie来防止表单重复提交
- D001-开发工具-VS Code