需要帮助解决Java递归问题

时间:2016-09-01 09:31:32

标签: java recursion

我一直想弄清楚如何解决这个问题,但我不明白。如果我选择mystery(2,25)b不是==0b%2=1,那么我有mystery(2+2, 25/2) + 2。我不明白我最后使用+2做了什么,我不明白我是应该添加ab还是使用新值再次执行代码。

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

2 个答案:

答案 0 :(得分:3)

我创建了一个试图说明答案的图像...

- 关于下一次回电后你必须添加的+2 ......

注意:如果将浮点值传递给int参数为12.5,则参数将仅获取整数部分:12

如果没问题,请检查正确! ;)

enter image description here

答案 1 :(得分:0)

评估每次调用mystery直到b为0并且递归调用链终止。然后使用代码中的中间a(+ a)添加最终的0结果。