关于汉诺塔用递归方法求指导的问题

C语言 码拜 9年前 (2016-04-13) 756次浏览
#include<stdio.h>
void hanoi(int n,char a,char b,char c);
int main(void)
{
int n;
printf(“请输入n来解决n阶汉诺塔问题\n”);
scanf(“%d”,&n);
hanoi(n,”a”,”b”,”c”);
return 0;
}
void hanoi(int n,char a,char b,char c)
{
if(n==1){
printf(“Move disk %d from %c to %c\n”,n,a,c);
}
 else{
hanoi(n-1,a,c,b);
printf(“Move disk %d from %c to %c\n”,n,a,c);
hanoi(n-1,b,a,c);

}
}
以上是代码,用红色标记的区域本人没有弄懂是什么意思,望高手能给本人说说这个hanoi 函数执行的过程
解决方案

80

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于汉诺塔用递归方法求指导的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)