2016-12-05 11 views
0

私は再帰的ホーナーシムをプログラムしようとしています。 現時点で正しい番号が出力されていますが、間違った順序(逆順)で出力されます。 しかし、出力はそれ以降でなければならない。 ヒント?再帰的ホーナースキームjava

public class uhs { 
    public static void main (String[] args) { 

     int z = Integer.parseInt(args[0]); 
     int q = Integer.parseInt(args[1]); 
     hornerUmkehrungRekursiv(z, q); 
     System.out.println(""); 
    } 

    static int hornerUmkehrungRekursiv(int z, int q) { 
     if (z == 0) { 
      return 0; 
     } else { 
      System.out.print(z % q); 
      return (hornerUmkehrungRekursiv(z/q, q) * 2) + z % q; 
     } 
    } 
} 
+0

あなたが渡すコマンドライン引数の例を追加できます –

+0

Z:変換する10進数 – dino1995

+0

q = qを変換するベース – dino1995

答えて

0

あなたはStringBuilderの変数を使用できない場合、あなたはそれが最後の分裂それまでは再帰呼び出しを行い、その後、それは余りを出力するようにコードを変更する必要があります。あなたはちょうどここに、あなたのコードビットを変更する必要があり、それを行うことができる方法の例です:

public class uhs { 
    public static void main(String[] args) { 
     int z = Integer.parseInt(args[0]); 
     int q = Integer.parseInt(args[1]); 
     System.out.println(hornerUmkehrungRekursiv(z, q)); 
    } 

    static int hornerUmkehrungRekursiv(int z, int q) { 
     if (z/q != 0) { 
      System.out.print(hornerUmkehrungRekursiv(z/q, q)); 
     } 
     return z % q; 
    } 
} 
+0

答えをありがとう:)しかし、私たちは、プログラムの結果を格納する変数を使用すべきではありません与えている。どのように文字列をストックする変数なしでそれをプログラムするか? – dino1995

+0

答えていただきありがとうございます。今それはどのように動作する必要があります:) – dino1995

0

あなたは再帰呼び出した後、印刷を実行する必要があります。

static int hornerUmkehrungRekursiv(int z, int q) { 
    if (z == 0) { 
     return 0; 
    } else { 
     int v = z % q; 
     int r = (hornerUmkehrungRekursiv(z/q, q) * 2) + v; 
     System.out.print(v); 
     return r; 
    } 
} 

あなたに期待されるを与えます結果 "11010010"。