读书人

关于C的递归调用?这里的递归是如何运

发布时间: 2013-08-06 16:47:25 作者: rapoo

关于C的递归调用?这里的递归是怎么运行的?
#include<stdio.h>
main()
{
hanoi(3,'A','B','C');
}

hanoi(n,a,b,c)
int n;
char a,b,c;
{int i=1;
if(n==1) printf("%c=>%c\n",a,c);
else
{
hanoi(n-1,a,c,b);
printf("%c=>%c\n",a,c);
hanoi(n-1,b,a,c);
}
}
这里到底是怎么调用的。每一步是怎么执行的,小弟很是不懂!
[解决办法]
关于“调用”,你应该学习数据结构中关于“堆栈”的概念,然后了解c语言函数使用堆栈来“进入”(Push各个参数)和“离开”(Pop各个参数以及返回值)函数体代码的方法,这大概跟理解hanoi塔模型所需要的想象力是一样的。
[解决办法]
也可以参考这个文章理解下:http://suizouwuya.blog.163.com/blog/static/100708329201192693329112/

读书人网 >C#

热点推荐