我必须编写一个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))在这里意味着什么?
答案 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