58,454
社区成员
发帖
与我相关
我的任务
分享
public static void moveDish(int level, char from, char inter, char to) {
if (level == 1) {
System.out.println("从" + from + "移动盘子1号到" + to);
} else {
moveDish(level - 1, from, to, inter);
System.out.println("从" + from + "移动盘子" + level + "号到" + to);
moveDish(level - 1, inter, from, to);
}
}
首先通过main()调用第5行的moveDish(3),此时第7行的moveDish(3)还没执行,此方法被压栈
然后调用了第5行的moveDish(2),此时还没执行过的栈内的moveDish(3)和这次压栈的第7行的moveDish(2)
然后调用了第5行的moveDish(1),此时还没执行过的有上一次的moveDish(3),moveDish(2)和这次第7行的moveDish(1)
然后调用了第2行moveDish(1)输出了语句
接着依次出栈执行之前没执行过的第7行的moveDish(1),moveDish(2),moveDish(3)
不知道你能不能理解,去看一下stack结构应该能够理解的比较好