【发布时间】:2016-06-11 17:11:17
【问题描述】:
我正在尝试编写一种方法来计算 1 和给定正整数 n 之间的奇数之和,而不使用除 if 语句以外的任何东西(天哪!)。效果很好,直到我决定创建一个方法,该方法会递归地询问数字直到它是正数并使用它来获取 n。
现在我的程序输出正确的结果,直到我输入一个负数。然后它会要求一个正数,直到我输入一个并输出 0,这是我初始化变量 val 的值。
我不确定逻辑错误在哪里。你能看看吗?我敢肯定这很明显,但我想我今天才智商低下。谢谢!
package oddsum;
import java.util.Scanner;
public class Oddsum {
public static int oddSum(int n){
int val=0;
if(n>1){
if(n%2==0){
val=n+oddSum(n-1);
}else{
val=oddSum(n-1);
}
}
return val;
}
public static int request(int n){
Scanner in= new Scanner(System.in);
System.out.println("Give me a positive integer: ");
n=in.nextInt();
if (n<0){
System.out.println("I said positive! ");
request(n);
}
return n;
}
public static void main(String[] args) {
int val=0;
int n=request(val);
System.out.println(oddSum(n));
}
}
【问题讨论】: