Java输出的递归方法

时间:2014-11-05 03:31:47

标签: java recursion

递归新手。此代码的输出为79,如何达到此答案?写下来后,我发现永远无法达到基本情况。 (-3+4) + (2 * -3) = -5 => (-5+4) + (2 * -5) = -11...我对递归或基本代数有一个基本的误解吗?

int result = negative(-3);

public int negative(int num)
{
    if(num >= 20)
    {
        return -5;
    }
    else
    {
        return negative(num + 4) + 2 * num;
    }
}

public void print()
{
    System.out.println("The final answer is " +result);
}

2 个答案:

答案 0 :(得分:2)

您的第一个案例不是(-3+4) negative(-3+4) negative(1) +(2 * -3)。如果您将negative的第一行更改为

System.out.println(num);

您可以看到数字如何递归地达到您已经给出的输出。

答案 1 :(得分:0)

尝试自己写出来:

如果函数发送的数字大于或等于20,则返回-5

否则,它返回2 * num +(本身再次使用num + 4)

我们得到:

(2 * -3)+(2 * 1)+(2 * 5)+(2 * 9)+(2 * 13)+(2 * 17)+( - 5)

做到这一点,你得到74