这种递归方法有什么作用?

时间:2012-03-13 04:35:11

标签: java

这是我遇到问题的代码。到目前为止,我知道此代码在int a和int b中传递。然后它检查int b是否等于0,如果是,那么它返回1.然后它检查b是否为1,如果是,则返回int a。但我没有得到这段代码的最后一部分。它有递归的东西,但我不明白。

public static int mystery(int a, int b) {
if(b == 0) {
return 1;
else if(b==1) {
return a;
return a * mystery(a,b-1);

2 个答案:

答案 0 :(得分:3)

此代码与指数类似,其中a是基数,b是指数。因此,在b = 0的情况下,显然,求幂规则的答案是1。在b = 1之后,return a因为a ^ 1 = a。否则,使用乘法递归获取递归的结果,其中递归的基本情况为b = 1(如果b = 0b > 0条件将不是基本情况。顺便说一下,你需要在代码上加上正确的括号来编译它(花括号需要关闭)。

即,

    public static int mystery(int a, int b) {
        if(b == 0) {
            return 1;
        } else if(b==1) {
            return a;
        }
        return a * mystery(a,b-1);
    }

如,

mystery(2, 6)返回64作为结果。

答案 1 :(得分:2)

在纸上运行:

神秘(10,20)

b == 0(假)b == 1(假)所以返回10 *神秘(10,19)

神秘(10,19)

归结为10 *神秘(10,18)

等等。

尝试使用不同的值,例如神秘(20,10)神秘(5,5);