Java 理解我创建的递归方法

Java 理解我创建的递归方法,java,Java,这是一个非常具体的问题,但希望能帮助我进一步理解递归 我们应该制作一个递归方法,输出帕斯卡三角形。过了一段时间,我终于让它工作起来了,但我还是不太明白我是怎么做到的 public static int[] pascalLine(int order){ // ska räkna ut n:te linjen i pascals triangel int [] arr = new int[order]; if (order < 0){ throw new

这是一个非常具体的问题,但希望能帮助我进一步理解递归

我们应该制作一个递归方法,输出帕斯卡三角形。过了一段时间,我终于让它工作起来了,但我还是不太明白我是怎么做到的

public static int[] pascalLine(int order){
    // ska räkna ut n:te linjen i pascals triangel
    int [] arr = new int[order];
    if (order < 0){
        throw new IllegalArgumentException("Value must be greater than 0");
    }
    else if(order == 1){
        return new int [] {1};
    }
    arr[0] = arr[order-1] = 1;
    int [] arrRev = pascalLine(order-1);
    System.out.println(toString(arrRev));
    for (int i = 1; i<arrRev.length; i++){
        arr[i] = arrRev[i-1] + arrRev[i];
    }
    return arr;
}
公共静态int[]pascalLine(int顺序){
//这是一个很好的例子
int[]arr=新的int[订单];
如果(顺序<0){
抛出新的IllegalArgumentException(“值必须大于0”);
}
否则如果(订单==1){
返回新的int[]{1};
}
arr[0]=arr[order-1]=1;
int[]arrRev=pascalLine(顺序-1);
System.out.println(toString(arrRev));

对于(int i=1;i而言,只有当对
pascalLine
的初始调用的
顺序为负时,才会引发异常

else if(order == 1){
    return new int [] {1};
}
order==1
时,递归终止,因此如果从正的
顺序开始,则永远无法达到负的
顺序

else if(order == 1){
    return new int [] {1};
}

pascalLine(order-1)
仅当
order>1

只是一条注释时才被调用,您应该在创建
int[]之前检查
order
arr
使用size
order
,您可能会得到一个
NegativeArraySizeException
。注意:在使用它之前,请检查
order
,并测试它是否等于零。