2014-11-05 73 views
0

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

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

它是负数(num + 4)+(2 * num)'不'负数((num + 4)+(2 * num))'。 – immibis 2014-11-05 03:46:44

回答

2

你的第一种情况是不(-3+4)它的negative(-3+4)其是negative(1) +(2 * -3)。如果你改变negative第一线

System.out.println(num); 

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

0

尝试写了这一点,你自己:

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

否则,返回2 * NUM +(NUM与自身再次4)

我们得到:

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

通过以上操作,您可以获得74