这是我遇到问题的代码。到目前为止,我知道此代码在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);
答案 0 :(得分:3)
此代码与指数类似,其中a
是基数,b
是指数。因此,在b = 0
的情况下,显然,求幂规则的答案是1。在b = 1
之后,return a
因为a ^ 1 = a
。否则,使用乘法递归获取递归的结果,其中递归的基本情况为b = 1
(如果b = 0
,b > 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);