0

私はプログラミングに比較的慣れていませんが、より困難な問題を解決するために、数値を基数 10 から階乗基数に変換するプログラムを作成しようとしています。階乗の底は、階乗の合計として数値を表します。たとえば、3*3!+0*2!+1*1!=19 であるため、19 (基数 10) = 301 (基数階乗) となります。http://en.wikipedia.org/wiki/Factorial_number_systemで、私の説明よりも優れた説明を見ることができます。入力可能な数値に対してこれを達成する最も簡単な方法は何ですか? これまでのところ、10 未満のすべての数値の階乗を簡単に出力できました。

for (int base = 1; base < 10; base++){
    int factorial = 1;
    for (int i = 1; i < base; i++){
        factorial = factorial*i;}
    System.out.println(factorial);}

私は多くの初歩的な間違いを犯していると確信しています。しかし、これについてあなたが私に与えることができるどんな助けにも感謝します. お時間を割いていただき、ありがとうございました。

4

2 に答える 2

1
for (int base = 1; base < 10; base++);{

for ステートメントと左中かっこの間にセミコロンを入れないでください。コンパイラは、あなたが意図したかのようにそれを解釈しています

for (...) { /* empty block */ }
{ // new, unrelated block
  ...
}

実際の実装については、ウィキペディアの記事を参照してください。

たとえば、数値を桁の値 (1、2、3、...) で繰り返し割り、剰余を数値として取り、整数を続けることにより、数値を階乗表現に変換して右から左に桁を生成することができます。この商が 0 になるまで。

だから(テストされていない、疑似コード)のようなもの...

int number = 463;
int radix = 1;
String result = ""; // prob use int[] or list in real life?

while (number > 0) {
   int div = number / radix;
   int remainder = number % radix;
   result = remainder + result;
   number = div;
   ++radix;
}
于 2013-02-19T17:22:55.170 に答える
1

これを試して

public int convertToFactorial(int x10){
    int length = String.valueOf(x10).length();
        String[] vals = String.valueOf(x10).split("");

        int result = 0;
        for (int base = 1; base < length + 1; base++){
            int factorial = 1;
            for (int i = vals.length - base; i > 0; i--){
                factorial = factorial*i;
            }
            result += Integer.parseInt(vals[base]) * factorial;
        }
        System.out.println(result);
     return result;
}

Ps は、Java コード規則の ant 言語構造を見てください。ループ定義後。

于 2013-02-19T17:25:28.963 に答える