这是最大搜索算法图: alt text http://img-photo.apps.zing.vn/upload/original/2010/05/17/17/1274093752543903925_574_574.jpg
所以,我想知道如何为 HaNoi Tower计划绘制图表:
package tunl;
public class TowersApp {
static int n = 3;
public static void main(String[] args) {
TowersApp.doTowers(3, 'A', 'B', 'C');
}
public static void doTowers(int n, char from, char inter, char to) {
if (n == 1) {
System.out.println("disk 1 from "+ from + " to " + to);
} else {
doTowers(n-1, from, to, inter);
System.out.println("disk " + n + " from " + from + " to " + to);
doTowers(n-1, inter, from, to);
}
}
}
我无法画出来。 任何人都可以帮助我!!!
答案 0 :(得分:2)
你的难题是算法是递归的。一种选择是将其转换为具有显式堆栈的迭代算法。但是这会失去算法的一些高级结构。展示递归结构会很好。
我不知道用于递归的标准流程图习惯用法,但我绘制的是基本算法作为流程图,并在其周围放置一个与调用中使用的名称相同的框。由于调用与父调用的参数略有不同,因此可以将这些调用分配给新变量,然后将这些变量作为参数传递。呼叫本身可以标记为“CALL doTowers”或类似。
答案 1 :(得分:1)
递归实现不能直接通过这种类型的流程图建模。 1)一种解决方案是将算法重写为非递归,然后绘制图。
我承认这不太令人满意。
1)从技术上讲,他们可以但是它们不再有用,因为它们不再代表控制流和递归调用隐含的数据堆栈。