汉诺塔
来源:互联网 发布:unix网络编程卷1 源码 编辑:程序博客网 时间:2024/06/04 18:52
//*******************
//汉诺塔
//第一个参数 : 起始的柱子有N个盘子
//第2-4个参数, 分别是a表示起始柱子,b表示中转柱子, c表示目的地
//第2-4个参数的寓意会发生改变的例如hannuota(n-1, a, c, b);
//有n-1个盘子, 起始位置为a, 中转为c, 目的是b;
/*
以 n = 2 为例,
int a = 'a', b = 'b', c = 'c';
hannuota(2, a, b, c);
执行过程分别为 :
1, hannuota(2-1, a, c, b); -> 2, printf("%c---->%c \n", a, c);
3, hannuota(2-1, b, a, c);
// 首先要把hannuota(n-1, a, c, b)的递归执行完毕后, 才会去执行hannuota(2-1, b, a, c); 这个递归函数 .
hannuota(1, a, c, b) 由于此处的实参是: 1, a, c, b 形参则接收(隐式接收)
形参是void hannuota(int n, char a, char b, char c)
n = 1 a = a b = c c = b;
{
if (n > 0)
{
if (1 == n)
{
printf("%c---->%c \n", a, c);
}
}
//所以第一句打印的是
输出结果 :
a---->b
a---->c
b---->c
*/
void hannuota(int n, char a, char b, char c)
{
if (n > 0)
{
if (1 == n)
{
//直接把 a的东西挪到c
printf("%c---->%c \n", a, c);
}
else
{
// c作为中转, 把a的东西移到b
hannuota(n-1, a, c, b);
printf("%c---->%c \n", a, c);
// a作为中转, 把b的东西移到c
hannuota(n-1, b, a, c);
}
}
}
//***********************
//汉诺塔
//第一个参数 : 起始的柱子有N个盘子
//第2-4个参数, 分别是a表示起始柱子,b表示中转柱子, c表示目的地
//第2-4个参数的寓意会发生改变的例如hannuota(n-1, a, c, b);
//有n-1个盘子, 起始位置为a, 中转为c, 目的是b;
/*
以 n = 2 为例,
int a = 'a', b = 'b', c = 'c';
hannuota(2, a, b, c);
执行过程分别为 :
1, hannuota(2-1, a, c, b); -> 2, printf("%c---->%c \n", a, c);
3, hannuota(2-1, b, a, c);
// 首先要把hannuota(n-1, a, c, b)的递归执行完毕后, 才会去执行hannuota(2-1, b, a, c); 这个递归函数 .
hannuota(1, a, c, b) 由于此处的实参是: 1, a, c, b 形参则接收(隐式接收)
形参是void hannuota(int n, char a, char b, char c)
n = 1 a = a b = c c = b;
{
if (n > 0)
{
if (1 == n)
{
printf("%c---->%c \n", a, c);
}
}
//所以第一句打印的是
输出结果 :
a---->b
a---->c
b---->c
*/
void hannuota(int n, char a, char b, char c)
{
if (n > 0)
{
if (1 == n)
{
//直接把 a的东西挪到c
printf("%c---->%c \n", a, c);
}
else
{
// c作为中转, 把a的东西移到b
hannuota(n-1, a, c, b);
printf("%c---->%c \n", a, c);
// a作为中转, 把b的东西移到c
hannuota(n-1, b, a, c);
}
}
}
//***********************
0 0
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 汉诺塔
- 对数组指针的理解
- linxu环境变量设置和查看方法
- 一句话脚本系列之将svn有改动的文件临时备份起来
- JSP九大对象与Servlet对象之间的对应关系
- 优化临时表使用,SQL语句性能提升100倍
- 汉诺塔
- 浅谈前端组件的开发思路
- SearchBar 的触发事件
- 浓浓的小公司味道
- 深入理解 Laravel Eloquent(一)——基本概念及用法
- 创建操作/删除多行数据的UITableView的细节
- [Java基础] 构造器
- 添加 Bash 自定义命令
- nohup failed to run command, permisson denied