三九宝宝网宝宝教育教学论文

C语言函数递归调用问题

12月23日 编辑 39baobao.com

[C语言递归折半查找求数组中的数]判断是否没找到条件不对,改一下: #include<stdio.h> int fun(int a[], int m, int n, int p) { int mid; if (m > n)return -1; mid = (m + n) / 2; if (a[mid] == p) return...+阅读

算法思路,比如说10个圆盘,需要从a处移到c处,就是先把上面的9个盘移到b处,(怎么移呢,再调用函数move)再把第十个盘移到c处,再把b里面的9个移到c处,(怎么移呢,再调用函数move)。

经典的函数递归调用案例。

程序解释:函数move(h,'a','b','c');

if(m==1)

printf("%c----->%c\n",x,z); 如果只有一个盘子,那么从x处移到z处。

否则,move(m-1,x,z,y); 先把最上面的m-1个盘子移到y处。

printf("%c----->%c\n",x,z,y); 再把剩下的一个移到从x处移到z处。

move(m-1,y,x,z);再把y处的m-1的盘子移到z处。

关键要理解算法,以及函数中的

move(int m,int x,int y,int z)代表把m个盘子从x移到z处,

move(m-1,x,z,y); 代表把m-1个盘子移到y处,

推荐阅读
图文推荐