递归新手。此代码的输出为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);
}
答案 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