繁体   English   中英

Java输出的递归方法

[英]Java output of a recursive method

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

您的第一种情况不是(-3+4)而是negative(-3+4) ,它是negative(1) +(2 * -3)。 如果您将negative的第一行更改为

System.out.println(num);

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

尝试自己写下来:

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

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

我们得到:

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

这样做,您会得到74

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM