public class OddSum {
public static int oddSum(int n) {
int totalSum;
if (n % 2 != 0 && n > 0) {
totalSum = totalSum + n;
System.out.println(totalSum);
return oddSum(n - 1);
//System.out.println(totalSum);
//return 1;
} else {
if (n == 0) {
System.out.println(totalSum);
return totalSum;
} else {
return oddSum(n - 1);
}
}
}
public static void main(String[] args) {
oddSum(13);
}
}
我有点困惑,如果我分配totalSum = 0,那么每次递归方法运行时它都会重置为零,我试图对所有奇数求和,它在think java书中,公共(public)和私有(private)变量还没有被引入还没有。
最佳答案
这可能就是您要找的
public static int oddSum(int n) {
if (n == 1) {
return 1;
} else {
return (n % 2 != 1) ? oddSum(n - 1) : oddSum(n - 1) + n;
}
}
说明
正如您已经注意到的,不建议将 TotalSum 分配给递归方法内的某个值,因为每次该方法运行时它都会被重置。相反,你要做的是
定义一个基本情况,在本例中为
if (n == 1)
。递归在此停止,并返回1
作为结果(因为它是 > 0 的最小奇数)定义一个递归步骤
return (n % 2 != 1) ? oddSum(n - 1) :oddSum(n - 1) + n
每当该方法尚未达到基本情况时调用。在此步骤中,您将应用条件n % 2 != 1
并检查该数字是偶数还是奇数。如果n
为偶数,则只需使用下一个较小的数字oddSum(n - 1)
调用该方法。否则 - 如果n
是奇数 - 您仍然使用下一个较小的数字调用该方法,但这次您将奇数n
的值添加到其中:oddSum (n - 1) + n
。
关于java - OddSum 递归练习,不知道如何求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40268321/