汉诺塔问题,程序看的懂,但是单步跟踪以后,有种不清楚的感觉、、递归这个思想能理解,但
不知道怎么就说服不了自己,不知道大家在编程过程中有没有遇到这些问题,某一个理论或者现象,你可以
操纵使用甚至还能给别人说道说道它,但是深究就起来就感觉不是很明了、、、
大家说说理解汉诺塔这个问题时都怎么弄清楚的?
- C/C++ code
#include <stdio.h> static long m = 0; //m记录步数 void Move(char x1,char x3) {//从A移动到C printf("\n移动顶部盘子%c->%c",x1,x3); m++; } void Hanoi(int n,char x1,char x2,char x3) {//把n个盘子从X1移动到X3,X2作辅助 if(n==1) Move(x1,x3); else { Hanoi(n-1,x1,x3,x2); //虽然是个调用但是传入的参数是不同的 Move(x1,x3); Hanoi(n-1,x2,x1,x3); } } void main() { int n; printf("请输入盘子数:"); scanf("%d",&n); printf("\n步骤如下:\n"); Hanoi(n,'A','B','C'); printf("\n"); printf("移动的总步数为:%d\n",m); }
------解决方案--------------------
开始都这样,习惯就好了.