奇数偶数的Java递归和

时间:2016-01-14 16:29:08

标签: java recursion

我必须编写一个java代码(它不是作业)

我们采用方法int n并返回:

If(n positive and odd) - > 1 + 3 + 5 + ... + N

If(n positive and even) - > 2 + 4 + 6 + .. + n

If(n negative or zero) - >返回0

我知道怎么分别做这三个,但是在一起?

例如If(n positive and even) - > 2 + 4 + 6 + .. + n

public int addeven(int n)
 {
  if(n<0)
  {
    return 0;    
  }
  if(n%2 != 0 && n>0 )
  {
    return (n+addeven(n-1));
  }

}

究竟什么回报(n + addeven(n-1))在这里意味着什么?

3 个答案:

答案 0 :(得分:3)

在这两种情况下,您都需要n + (n-2) + (n-4) ...,所以这应该有效:

public int addStrange(int n) {
    if (n <= 0) {
        return 0;
    }
    return n + addStrange(n - 2);
}

答案 1 :(得分:0)

  

究竟什么回报(n + addeven(n-1))在这里意味着什么?

外括号是不必要的,所以它真的是

return n+addeven(n-1);

这意味着返回调用者n的总和以及使用n - 1调用addeven的结果。对addeven的调用是函数的递归部分。您正在调用与当前相同但使用不同参数的方法。 Java(以及所有非古老的语言)将允许这样做。它跟踪'堆栈'上每个未完成的调用。重要的是你的递归函数最终会在不调用自身的情况下返回,或者你有无限递归并且会得到堆栈溢出

答案 2 :(得分:-1)

为什么要使用递归?例如,如果n是偶数,则答案是(n + 2)* n / 4