汉诺塔问题
2015-09-11 09:13
232 查看
问题及代码:
/*
* Copyright (c) 2015, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:1.cpp
* 作 者:于东林
* 完成日期:2015年9月10日
* 版本号:v3.0
*
* 问题描述:经典汉诺塔,A.B.C三个柱子,借助于B,将A上边的盘子,依次加到C柱子上。
* 输入描述:n为盘子数,即为将m个盘子在A,B,C三个柱子上变换。
* 程序输出:变换的过程
*/
#include <stdio.h> void move(int, char, char,char); int main() { int m; scanf("%d",&m); move(m,'A','B','C'); return 0; } void move(int n, char A, char B,char C) { if(n==1) printf("%c-->%c\n", A, C); //递归的终止条件 else { move(n-1,A,C,B); printf("%c-->%c\n", A, C); move(n-1,B,A,C); } }
运行结果:
知识点总结:
递归是循环中有循环,实现了计算的规律。
学习心得:
C语言的逻辑循环让程序变得更加严谨,今后学习中要好好理清思路,谨慎思考。
相关文章推荐
- 非通知实现夜间模式
- Palindrome Number
- 面向对象基础知识02
- 卡片view
- 第二周项目(3):程序的多文件组织(2)
- 用javascript实现java中的集合list(后续不断完善优化)
- 利用Android的SDK工具来做应用程序测试
- Mac 下远程连接Linux
- 用javascript实现java中的集合list(后续不断完善优化)
- composer的使用总结
- halcon学习之tuple按位运算
- 如何在STM32F10x_StdPeriph_Template基础上建立自己的MDK工程(二)
- KVC实现原理简介
- Heroku上部署django
- 工作周报059
- TweenLite属性——.selector
- 【第五篇】Volley代码修改之图片二级缓存以及相关源码阅读(重写ImageLoader.ImageCache)
- 第二周项目 - 程序的多文件组织
- 第2周项目2 - 程序的多文件组织
- 昨天修复的几个编译问题