【问题标题】:Triangle Recursion Java [closed]三角递归Java [关闭]
【发布时间】:2023-04-09 10:04:01
【问题描述】:

在命令行中取两个数字 m 和 n 并写出星号的三角形图案

public class Triangle {

public static void main(String[] args) {
    int a=0;
    int b=0;
    if(args.length!=0){
        a=Integer.parseInt(args[0]);
        b=Integer.parseInt(args[1]);
    }
    printFirstHalf(a,b);
    printSecondHalf(a,b);
}

public static void printFirstHalf(int m, int n){

    if(m==0){
        return;
    }

    //recursive step
    for(int i=m; i<=n; i++){
        System.out.print("*");
    }
    System.out.println();
    printFirstHalf(m-1,n);


}

public static void printSecondHalf(int m, int n){
    if(m==0){
        return;
    }
    printSecondHalf(m-1,n);

    //recursive step
    for(int i=m; i<=n; i++){
        System.out.print("*");
    }
    System.out.println();


}
}

如果发送了 3 和 7,则应该打印:

***
****
*****
******
*******
*******
******
*****
****
***

现在打印出来了:

*****
******
*******
*******
******
*****

我知道我很接近,但由于某种原因,我主要被卡住了。

【问题讨论】:

  • 看来是时候调试问题了。
  • 这就是调试器的用途。
  • 请提供一些关于您尝试解决问题的详细信息,然后根据您的尝试缩小您的问题范围。因为这个问题对于 SO 来说太宽泛了,你不会得到有用的答案。您是否尝试过使用调试器查看程序运行时变量会发生什么变化?

标签: java recursion geometry


【解决方案1】:

考虑一下:

public static void printFirstHalf(int m, int n){
    if(m>n){
        return;
    }

    // print asterix
    for(int i=1; i<=m; i++){
        System.out.print("*");
    }
    System.out.println();

    // recurse
    printFirstHalf(m+1,n);
}

你现在知道你的其他方法哪里出错了吗?

如果您是第一次使用递归,我知道这可能很困难,但递归没有“魔力”。逐步完成代码并了解它的作用。在这种情况下,您实际上并没有打印所需的 asterix 数量。坚持下去。

【讨论】:

    【解决方案2】:

    你的前半部分可能是这样的(增量逻辑>:

    public static void printFirstHalf(int m, int n){
    
        if(m>n){
            return;
        }
    
        //recursive step
        for(int i=1; i<=m; i++){
            System.out.print("*");
        }
        System.out.println();
        printFirstHalf(m+1,n);
    
    }
    

    建议你为下半年编写类似的递减逻辑

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-12
      • 2022-12-20
      • 2014-07-03
      • 2021-07-18
      • 1970-01-01
      • 2022-07-17
      相关资源
      最近更新 更多