递归三角形

时间:2014-10-19 19:52:20

标签: java recursion

所以,我已经分配了一个问题,我必须有一个用户输入的数字(一个int)生成给定大小的三角形。即如果用户输入“5”作为大小,程序将生成以下内容:

三角形的峰值或最大的行将是所需的大小。 这是捕获 - 我们必须使用第二种方法来执行此操作,并且该方法只能接受两个参数。该方法也必须是唯一用于制作三角形的方法。为了澄清 - 我们不能将三角形分成两半,一半用于前半部分(增加星号),一个用于第二部分。我们也不能使用循环。 (减少)到目前为止,我的程序有3个方法(包括main)一个像ask这样的方法,用于识别正在打印的内容,以及实际打印行的方法。但是,我似乎无法做到这一点。关于如何做任何帮助?

3 个答案:

答案 0 :(得分:1)

使用for循环System.out.printSystem.out.println语句的组合。你也可以尝试谷歌。数百万人做了这个小小的练习。

等等......有很多演示要学习。

答案 1 :(得分:0)

~~从我的手机写信所以对不起~~编辑:现在我在我的电脑上,我会更好地描述它

void pyramid(int height){ // wrapper method
    foo(1, height);
}

void foo(int a, int b){
    if(a == b)
        if( a== 0) return;
        else b = 0;
    for(int = 0; i < a; ++i)
        System.out.print("*");
    System.out.println();
    if(a < b) foo(a+1, b);
    else foo(a-1, b);
} 

方法foo: a是当前高度,b是我们金字塔的最大高度。 如果a和b相同(这是我们第一次到达峰值时),我们将b设置为0,这是我们降低高度的指标。 a和b相等的第二次是,当两者都是0时,这意味着我们的金字塔已经完成,我们可以结束(返回;)

要“构建”金字塔,我们使用循环来打印a - 同一行中的许多星号

请参阅print()而不是println()

之后我使用println()换行。

现在简单检查“a&lt; b”是否意味着我们需要增加高度,如果它是假的我们需要降低高度

a == b永远不会发生,因为我们在开头就抓住了这个案例

然后调用取决于递归地增加或减少foo方法

注意:我昨天晚上从我的手机上制作了代码,到目前为止我还没有测试过,但是根据我的描述你可能会得到它背后的想法,你可以自己修复错误(如果有的话)

答案 2 :(得分:-1)

public static void printTriangle(int size) {
    int peak = 0;
    StringBuilder triangle = new StringBuilder();
    do {
        if (size % 2 == 0) {
            System.out.println("Size of triangle must be an odd number: 1, 3, 5, ...");
            break;
        }
        if (peak <= size / 2) {
            System.out.println(triangle.append("*"));
            peak++;
        }

        if (peak > size / 2) {
            System.out.println(triangle.deleteCharAt(0));
            peak++;
        }

    } while (peak < size);
}