递归顺序为什么会上升?

时间:2015-10-30 00:04:46

标签: recursion

请帮助我理解递归是如何工作的。为什么下面的代码按顺序打印出1,2,3,4,5,6?为什么不向下6为什么它会上升?

public class Recursion {

    public static void main(String[]args){
        Recursion r = new Recursion();
        r.blag(6);
    }

    int blag(int num){
        if(num!=0){
            blag(num-1);
            System.out.println(num);
        }
        return 10;
    }

}

OR

类似的东西:

int getTriNum(int num){
    if(num==1){
        return 1;
    }else{
        return(num+getTriNum(num-1));
    }
}

如果输入6作为数字

,请解释它是如何得出21号的

2 个答案:

答案 0 :(得分:0)

在打印前调用递归。一旦递归到达num = 1。忽略返回值10,并打印值1。然后当num等于2时返回调用。当函数调用return时。它们按数字顺序打印出来。
    blag(NUM-1);     的System.out.println(NUM)

在第二个示例中,返回时会添加数字。 6 + 5 + 4 + 3 + 2 + 1 = 21

答案 1 :(得分:0)

blag()中,您有以下代码:

if (num != 0){
    blag(num - 1);
    System.out.println(num);
}

请注意,在打印数字之前,再次递归再次调用blag(num - 1)。因此,数字按照从小到大的顺序打印。