Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
三角递归Java_Java_Recursion_Geometry - Fatal编程技术网

三角递归Java

三角递归Java,java,recursion,geometry,Java,Recursion,Geometry,在命令行上取两个数字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);

在命令行上取两个数字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();


}
}
现在它打印出:

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

考虑一下:

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);
}
publicstaticvoidprintfirsthalf(int m,int n){
如果(m>n){
返回;
}
//打印星体

对于(int i=1;i您的前半部分可能是这样的(增量逻辑>:

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);

}
publicstaticvoidprintfirsthalf(int m,int n){
如果(m>n){
返回;
}
//递归步骤

对于(int i=1;我认为是时候调试这个问题了。这就是调试器的作用。请提供一些关于您试图做什么来解决这个问题的详细信息,然后根据您的尝试缩小您的问题范围。因为这个问题对SO来说太广泛了,您将无法得到有用的答案。您是否尝试使用调试器查看程序运行时,变量会发生什么变化?
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);

}