通过河内之塔问题深入理解递归思想
2017-04-23 20:42
399 查看
#include<stdio.h> void hanoi(int n,char source,char temp,char target){ if(n==1){ printf("Move sheet %d from %c to %c\n",n,source,target); } else{ hanoi(n-1,source,target,temp); printf("Move sheet %d from %c to %c\n",n,source,target); hanoi(n-1,temp,source,target); } } /* 目标:A-->C 递归思想:我永远只当A上面只有2个盘子,第N个和第(N-1)个。 这两个盘子的处理方法是:以B为中介(跳板)依次执行:A-->B A-->C B-->C。 关键在于把(N-1)从A->B, 再B->C,还是用同样的函数处理,于是就自然形成了递归,可见下面图解。 */ int main(){ char A,B,C; int n; printf("请输入盘数: "); scanf("%d",&n); hanoi(n,'A','B','C'); return 0; }
目标A->C:以B为跳板;
A->B:以C为跳板;
B->C:以A为跳板;
手写当n=3时的程序运行流程
相关文章推荐
- 深入理解递归:全排列问题
- 深入理解递归以及汉诺塔问题[数据结构]
- to初学者:从汉诺塔问题深入理解递归算法思想
- 通过汉诺塔问题理解递归的精髓
- 通过汉诺塔问题来理解递归
- 笨笨熊搬家问题深入--迷宫问题--深度搜索--还是填充思想并且打印出路线--递归--结构体数组---编程随笔(4)
- [Java实现]通过一个Java小程序(吃苹果)深入理解面向对象思想
- 深入理解递归:全排列问题
- 递归三部曲之深入理解八皇后问题
- activity的深入浅出-------通过几个问题来深入理解handler机制
- J2EE Design Patterns 3 -- Pattern太多了,没必要教条,把Pattern当做启发,理解问题和掌握解决问题的通用方法和思想最重要。
- 走火入魔.NET权限组件-用树型资源权限(数据集权限)思想来权限递归问题
- 结构体存储文件 C 深入理解2 直接存储,有大端和端的问题。
- 深入理解二维数组地址问题
- 通过strstr函数来深入理解逐个给字符数组赋值和用字符串给字符数组赋值的区别
- 递归和迭代----深入理解递归的使用
- [转]通过ECMA-262-3 深入理解this关键字
- 走火入魔.NET权限组件-用树型资源权限(数据集权限)思想来权限递归问题
- 深入理解 C++ 指针(九)---指针的安全问题
- 通过汉诺塔问题分析递归过程