在这个递归方法中,我试图使用初始调用mystery5(-23, -48)
计算一个数字。在完成我的第一系列if语句后,我得到了数字23
和48
。一旦我到达决策语句的else分支,方法调用在等式中有什么优先级?此外,前两个if语句中的mystery5
方法调用前面的负号是否表示如果x
插入到方法调用中,则会有一个正-23
值(Ex :-mystery5(-23, -48)
)?
public int mystery5(int x, int y){
if (x < 0) {
return -mystery5(-x, y);
} else if (y < 0) {
return -mystery5(x, -y);
} else if (x == 0 && y == 0) {
return 0;
} else {
return 100 * mystery5(x / 10, y / 10) + 10 * (x % 10) + y % 10;
}
}
答案 0 :(得分:0)
因此我认为mystery5(1, 0)
返回1.假设这是正确的,那么调用mystery5(-1, 0)
将会触及第一个语句,它会看到x = -1)
小于零。这样做return -mystery5(-x,y)
,因此当放入x
和y
的值时,这相当于return -mystery5(1,0)
。 -
前面的mystery5
会在调用时翻转mystery5
函数结果上的符号。因此,当mystery5(1,0)
返回1
时,会被-1
否定。这是mystery5(-1,0)
的最终返回值。