我一直想弄清楚如何解决这个问题,但我不明白。如果我选择mystery(2,25)
,b
不是==0
和b%2=1
,那么我有mystery(2+2, 25/2) + 2
。我不明白我最后使用+2
做了什么,我不明白我是应该添加a
和b
还是使用新值再次执行代码。
mystery(2, 25)
和mystery(3, 11)
分别有哪些值?
public static int mystery(int a, int b) {
if (b == 0) return 0;
if (b % 2 == 0) return mystery(a+a, b/2);
return mystery(a+a, b/2) + a;
}
选择答案:
33554432, 177147
525, 1331
50, 33
75, 44