C语言之算法初步(汉诺塔--递归算法)
2015-10-26 20:54
405 查看
个人觉得汉诺塔这个递归算法比电子老鼠的难了一些,不过一旦理解了也还是可以的,其实网上也有很多代码,可以直接参考。记得大一开始时就做过汉诺塔的习题,但是那时代码写得很长很长,也是不理解递归的结果。现在想起来汉诺塔的算法就3个步骤:第一,把a上的n-1个盘通过c移动到b。第二,把a上的最下面的盘移到c。第三,因为n-1个盘全在b上了,所以把b当做a重复以上步骤就好了。所以算法看起来就简单多了。不过,思考过程还是很痛苦的,难以理解。递归中会保存数据的好处在这里又得到体现,太神奇了。
汉诺塔代码如下:
汉诺塔代码如下:
相关文章推荐
- 黑马程序员****C语言基础****C语言的基本概念
- 顶层const与底层const
- C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。
- 【C语言】【笔试题】编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。
- 黑马程序员——C语言基础---结构体
- IOS开发笔记10-字符串-C语言笔记
- C++:派生类的构造函数和析构函数
- 【C语言】【笔试题】实现函数itoa(int n,char s[]),将整数n这个数字转换为对应的字符串,保存到s中
- C语言指针总结
- C++:基类和派生类
- C++拷贝构造函数语意学 copy constructor(The Semantics of Constructors)
- IOS开发笔记9-数组-C语言笔记
- const int *p, int *const p的区别
- 【C语言】【笔试题】实现一个函数int my_atoi(char s[]),可以将一个字符串转换为对应的整数。
- C/C++ 中的0长数组(柔性数组)
- c语言结构体注意事项及用法
- IOS开发笔记8-进制-C语言笔记
- C++:友元(非成员友元函数、成员友元函数、友元类)
- C++ 矩阵计算库 Eigen 使用笔记(一)