实现递归 当在一个函数的运行期间调用另一个函数时,在运行该被调用函数之前,需先完成三件事:
将所有的实在参数、返回地址等信息传递给被调用函数保存;为被调用函数的局部变量分配存储区;将控制转移到被调用函数的入口。从被调用函数返回调用函数之前,应该完成:
保存被调函数的计算结果;释放被调函数的数据区;依照被调函数保存的返回地址将控制转移到调用函数。 多个函数嵌套调用的规则是: 后调用先返回此时的内存管理实行“栈式管理” 代码汉诺塔v1.0
public class hanoi { public static void haonoi(int n,char a,char b,char c){ if(n==1) System.out.PRintln(a +"->"+ c); else { haonoi(n-1,a,c,b); System.out.println(a+"->"+c); haonoi(n-1,b,a,c); } } public static void main(String[] args) { int n =4; haonoi(n,'x','y','z'); }}汉诺塔v1.1
public class hanoi { static int i =0; public static void haonoi(int n,char a,char b,char c){ if(n==1) move(n,a,c); else { haonoi(n-1,a,c,b); move(n,a,c); haonoi(n-1,b,a,c); } } public static void move(int n,char a,char c){ System.out.println("第" + (++i) +" 次移动 : " + a +" -> " + c); } public static void main(String[] args) { int n = 4; haonoi(n,'x','y','z'); }}程序运行流程图:
新闻热点
疑难解答