本文主要是介绍再来一种求大数阶乘的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
过多的我就不说了,直接看看代码:
java版的:
/*** */
package Factorial;/*** @author 牟尼(昵称)* @blog:http://blog.csdn.net/u012027907**/
public class Factorial {
/** 大数阶乘计算类*//** 分析:大数阶乘用数组来存储,如5的阶乘可存在数组cal[]中,表示为* 0 1 2 3*[3][0][2][7]*个位存阶乘的位数*要求5的阶乘,则要求得4!的结果,一直要求的1!的结果为1;*所以使用循环即可*//** 大数阶乘计算*/public String fac(int num){String result; //最终结果的字符串int max; //阶乘的位数double sum = 0;for(int i = 2; i <=num; i++){//计算阶乘的位数sum += Math.log10(i);}max = (int)sum +1;int cal[] = new int[max+1];//开辟空间for(int j = 1; j <= max; j++)cal[j] = 0;cal[0] = max; //cal[0]存储阶乘的位数cal[1] = 1;int g = 0;//进位for(int k = 2; k <= num; k++){//从2乘到numg = 0;for(int i =1; i <=max;i++){//计算每个k与数组相乘的结果cal[i] = cal[i]*k + g; g = cal[i]/10;cal[i] = cal[i]%10;}}result = "";for(int i = max; i > 0; i--)//将整型数组转为字符串result += cal[i];return result;}
}
运行结果:
这篇关于再来一种求大数阶乘的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!