1
私は、1と正の整数nとの間の奇数の合計を計算する方法を書こうとしていますが、if文以外のものは使用しません。それは、肯定的になるまで再帰的に質問し、それを使ってnを得る方法を作成することに決めてしまうまで、うまくいっています。お互いを排除する再帰的な方法はありますか?
マイナスの数字を入力するまで、myプログラムは正しい結果を出力します。それは私が1つを入力して0を出力するまでpostiveを要求し、変数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));
}
}
、コードは現在、非常に良く見えますが、私の入力負の数ならば、私は正の1を入力プログラムする前に、結果はまだゼロです。私はそれが間違いだとは思わない。 –
私はそれをテストし、正しい結果を得ました。あなたにコード全体を送りましょう。 – erolkaya84
ハハ、そのバグを見つけました。私はif(n <0)の後に再帰的に呼び出すときにリクエスト()を返す必要がありましたが、私はしませんでした。したがって、n <0の場合には作業変数を決して得られませんでした。作業コードのためにありがとう! :) –