首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-08-06 
关于C的递归调用?这里的递归是怎么运行的?#includestdio.hmain(){hanoi(3,A,B,C)}hanoi(n,a,b,c)

关于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/

热点排行