public static void main(string[] args) { biginteger t = biginteger.one; biginteger r = biginteger.zero; for(int i = 1; i <= 100; i++) { t = t.multiply(new biginteger(string.valueof(i))); r = r.add(t); } system.out.println(r); } }
lz你自己改正后的代码还是有问题,把 for(int i = 1; i <= 100; i++) { 换成 for(int i = 1; i <= 3; i++) { 计算3的阶乘和来验证,得到的输出结果是13,但是1! + 2! + 3! = 1 + (1 x 2) + (1 x 2 x 3) = 1 + 2 + 6 = 9 这道题如果用递归的话,正确的代码应该是:
import java.math.biginteger;
public class biginttest2 {
public static void main(string[] args) { biginteger r = biginteger.zero; for (int i = 1; i <= 100; i++) { r = r.add(getresult(i)); } system.out.println(r); }
public static biginteger getresult(int atr) {
biginteger t = biginteger.one; //biginteger rx = biginteger.zero; for (int i = 1; i <= atr; i++) { t = t.multiply(new biginteger(string.valueof(i))); //rx = rx.add(t); //t里面已经是atr的阶乘了,如果再加一遍,getresult的返回值就直接是阶乘和了,这一行应该去掉 } return t; } }
public static void main(string[] args) { biginteger r = biginteger.zero; for (int i = 1; i <= 100; i++) { r = r.add(getresult(i)); } system.out.println(r); }
public static biginteger getresult(int atr) { if (atr == 1) { return new biginteger("1"); } else { return new biginteger(string.valueof(atr)).multiply(getresult(atr - 1)); } } }
执行结果同上
发表于:2007-10-07 12:43:2019楼 得分:0
package demo; import java.math.biginteger;
public class demosun { public static void main(string[] args) {
biginteger bignum = new biginteger("100"); system.out.print(factorial(bignum)); }