递归思路总是搞不明白,就比如汉诺塔。
1.为什么汉诺塔能用函数递归调用解决(或者说怎样判断一个问题它是否能用递归思想,千万别跟我说阶乘的例子那个我知道)?2.汉诺塔的自身调用结束条件是什么?
代码如下,请帮忙分析一下上面的问题。(码盲表示压力太大学递归,求指导鼓励...)
程序代码:
#include<stdio.h> void move(int n,int x,int y,int z) { if(n==1) printf("%c----->%c ",x,z); else { move(n-1, x, z, y); printf("%c----->%c ",x,z); move(n-1,y,x,z); } } void main() { int h; printf("please input a number:\n"); scanf("%d",&h); printf("the step to moving %2d diskes:\n",h); move(h,'a','b','c'); }