首页 > 代码库 > 【牛刀小试1】汉诺塔
【牛刀小试1】汉诺塔
【牛刀小试1】汉诺塔
主要知识:
1. 递归
2. 函数
3. If-else
4. 静态变量
//汉诺塔
汉诺塔是一种游戏,有三个塔分别标为A、B、C。A塔上套有n个盘子,
分别从下往上由大到小排列着,游戏的目的是要把A塔的盘子移到C塔上,
每次移动之后,都不允许出现大盘子在小盘子上面的情况。
分析:
我们要把A塔的盘子移到C塔,则必须借助B塔(当n= 1时除外),再移
到C塔。
当n= 1时,A->C
当n= 2时,A->B,A->C,B->C
当n= 3时,A->C,A->B,C->B,A->C,B->A,B->C,A->C
当n=....
解答:采用递归函数(自调用)
#include <stdio.h> //tower函数的定义。使用递归(自调用) //参数分别为:层数,塔A,塔B,塔C void tower( int num, char a, char b, char c) { staticint count= 0; //静态局部变量,生存周期为整个程序 if(num== 1 ) { count++; //count= count+ 1; printf("第%3d步: %c->%c\n",count, a, c ); //%3d为字宽为3 } else { count++; tower(num- 1, a, c, b ); //自己调用自己 printf( "第%3d步:%c->%c\n",count, a, c ); tower( num- 1, b, a, c ); } return; } int main( void ) { intn; //n为A塔的层数 printf("输入A的层数: " ); scanf("%d", &n ); //函数tower的调用 tower(n, 'A', 'B', 'C' ); return0; }
运行结果:
【指尖的微笑】错误在所难免,希望得到大家的指正^-^
转载时保留原文的链接http://codingit.howbbs.com和http://blog.csdn.net/mirrorsbeyourself
【牛刀小试1】汉诺塔
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。