#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 函数执行的过程
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里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出