java容器效率_发个大数阶乘的算法...用容器写的.很简单.效率不高

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

package main;

import java.util.ArrayList;

import java.util.List;

/*大概方法:将List的里的所有数循环*n

* 然后进位得到新的List

* */

public class Test {

/*@param 需要进位的list

* @out 进位后的容器

* */

public static void carry(Listarray){

int size = array.size();//储存位数

int temp=0;

for(int i=0;i

temp=array.get(i);//储存当前的数值

if(temp>=10){//判断是否需要进位

if(i

array.set(i, temp%10);//设置当前位

array.set(i+1, temp/10+array.get(i+1));//设置前一位

}else{

while(temp>=10){//最高位循环进位

array.set(i, temp%10);//设置当前的位数的数字

array.add(temp/10);

i++;

temp=temp/10;

}

}

}else{

array.set(i, temp);

}

}

}

public static List factorial(int n){

int timeBegin=(int) System.currentTimeMillis();//计算时间

List array = new ArrayList();

array.add(1);//初始化1

int size = 0;

for(int j=1;j<=n;j++){//循环n!

size = array.size();

for(int i=0;i

array.set(i, array.get(i)*j);

}

carry(array);//进位

}

//输出数值

for(int i=array.size()-1;i>=0;i--){

System.out.print(array.get(i));

if(i%4==0){

System.out.print(" ");

}if(i%100==0){

System.out.print("\n");

}

}

int timeFinishi=(int) System.currentTimeMillis();

int time = timeFinishi-timeBegin;

System.out.println("\n"+"\n"+"容器版:计算:"+n+"!的结果");

System.out.println("\n位数:"+array.size());

System.out.println("计算耗时: " + time +"毫秒" );

return array;

}

public static void main(String[] ags){

Test.factorial(10000);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值