1

再帰プログラムを使用して、ある値から始まり、最大値になり、元の値に戻るシーケンスを出力しようとしています。プログラムは、静的変数またはグローバル変数を使用したり、配列を使用したりすることはできません。

例:f(5,10)版画5,6,7,8,9,10,9,8,7,6,5

私は概念を理解していると思いますが、少なくとも私は理解していると思いますが、再帰メソッドから変数を出力してシーケンスを出力する方法がわかりません。
これが私のプログラムです:

 public class recursive {

     public static int f(int a, int b) {
         System.out.print(a);   
         if (a == b) return a;
         else return a + f(a + 1, b) + a;

     public static void main(String[] args) {
         f(2, 5);
     }

 }

印刷できるようにプログラムを変更する必要がありますか? 私のコンセプトは正しいと確信していますが、それを印刷することはできません。助けてください!!!!

4

5 に答える 5

1

再帰関数内で印刷する必要がある場合は、返す代わりに印刷するだけです..

public static void f(int a, int b) {
    if (a == b) {
        System.out.print(a);
    }
    else {
        System.out.print(a + ",");
        f(a+1,b);
        System.out.print("," + a);
    }
}
于 2013-10-08T00:23:12.077 に答える
0

配列を使用できない場合、その main(String []args) が問題になります;)

あなたがしたいことは次のとおりです。

boilerplate boilerplate void recursive(num, max) {
    System.out.print(num)

    if (number < max) {
        System.out.print(",");
        recursive(+1, max);
    }

    System.out.print(num)
}

boilerplate boilerplate main(String[] args) {
   recursive(1, 10);
}

免責事項: 私が Java を始めてから約 15 年が経ちましたが、おそらくこれには何か非常に問題があると思われます。

于 2013-10-08T00:22:27.890 に答える
0
public class recursive {
    public static void f(int a, int b) {
        if (a == b) {
            System.out.print(a);
        } else {
            System.out.print(a + ",");
            f(a + 1, b);
            System.out.print("," + a);
        }
    }

    public static void main(String[] args) {
        f(2, 5);
    }
}
于 2013-10-08T00:30:25.037 に答える