算法图

时间:2010-05-17 10:59:43

标签: algorithm

这是最大搜索算法图: 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);
        }
    }
}

我无法画出来。 任何人都可以帮助我!!!

2 个答案:

答案 0 :(得分:2)

你的难题是算法是递归的。一种选择是将其转换为具有显式堆栈的迭代算法。但是这会失去算法的一些高级结构。展示递归结构会很好。

我不知道用于递归的标准流程图习惯用法,但我绘制的是基本算法作为流程图,并在其周围放置一个与调用中使用的名称相同的框。由于调用与父调用的参数略有不同,因此可以将这些调用分配给新变量,然后将这些变量作为参数传递。呼叫本身可以标记为“CALL doTowers”或类似。

答案 1 :(得分:1)

递归实现不能直接通过这种类型的流程图建模。 1)一种解决方案是将算法重写为非递归,然后绘制图。

我承认这不太令人满意。


1)从技术上讲,他们可以但是它们不再有用,因为它们不再代表控制流递归调用隐含的数据堆栈