|
分類:[Java]
初めて質問させていただきます。
まだjavaをはじめて1か月くらいの初心者です。
学校で出された課題で悩んでいます。
問題は次の通りです。
53!を正確に計算して出力するjavaプログラムを作成せよ。
ただし、1桁分の数を記憶するオブジェクトを多数作り、それらの協調で計算を進めていくこと。
main→1桁目→2桁目→…→70桁目という感じに。
そのオブジェクトを作り、53!を計算するところまでは出来たのですが、出力がうまくいきません。
自分で作ったプログラムは以下の通りです。
public class factorial_of_53 {
public static void main(String args[]){
Digit top_digit = null;
for(int i = 70; i >= 1; i--)
top_digit = new Digit(top_digit);
top_digit.add(1);
for(int i = 2; i <= 53; i++){
top_digit.multiply(i);
}
top_digit.print();
}
}
class Digit{
private int value;
private Digit next_higher_digit;
Digit(Digit next_higher_digit){
value = 0;
this.next_higher_digit = next_higher_digit;
}
public void add(int num){
value += num;
}
public void multiply(int multiplier){
this.multiply(multiplier, 0);
}
private void multiply(int multiplier, int carry){
value *= multiplier;
value += carry;
int next_carry = value/10;
value %= 10;
if(next_higher_digit != null)
next_higher_digit.multiply(multiplier, next_carry);
}
public void print(){
System.out.print("53! = ");
this.next_print();
}
private void next_print(){
System.out.print(value);
if(next_higher_digit != null)
next_higher_digit.next_print();
else
System.out.println();
}
}
実行結果
53! = 0000000000002764273186638873430969469939833573108924655200604823884724
結果が逆に表示されてしまうわけです。
何とか70桁目から出力したいのですが、どうすればよいのでしょうか?
よろしくお願いします。
|