求任意数的阶层!

解决方案 »

  1.   

    关键是大数吧?
    /**
     * 文件Test.java
     * @author hdhmail2000(禅剑飞雪)
     *
     */
    public class Test 
    {
    /**
     * 大数加法
     */
    public String add(String a,String b)
    {
    String big=a.length()>b.length()?a:b;
    String small=a.length()>b.length()?b:a;
    int dot=0; //进位
    StringBuffer result=new StringBuffer("");
    char[] cBig=((new StringBuffer(big)).reverse()).toString().toCharArray();
    char[] cSmall=((new StringBuffer(small)).reverse()).toString().toCharArray();/*
     * 计算最小的一个与大的一个小的部分的和
     */
    for(int i=0;i<cSmall.length;i++)
    {
    int temp=Integer.parseInt(String.valueOf(cBig[i]))+Integer.parseInt(String.valueOf(cSmall[i]))+dot;
    dot=temp/10;
    result.append(temp%10);
    }/*
     * 对大的一个进行计算
     */
    for(int j=cSmall.length;j<cBig.length;j++)
    {
    int temp2=Integer.parseInt(String.valueOf(cBig[j]))+dot;
    dot=temp2/10;
    result.append(temp2);
    }/*
     * 结果的位数超过最大的时候进行进位
     */
    if(dot>0)
    {
    result.append(dot);
    }
    result=result.reverse();
    return result.toString();
    }
    /**
     * 大数乘法
     */
    public String multiply(String a,String b)
    {
    char[] cA=((new StringBuffer(a)).reverse()).toString().toCharArray();
    char[] cB=((new StringBuffer(b)).reverse()).toString().toCharArray();String result="0";
    for(int i=0;i<cA.length;i++)
    {
    StringBuffer tempSingle=new StringBuffer("");/*
     * 一个数的每一位数乘以另外一个数
     */
    int dot=0; //进位
    for(int j=0;j<cB.length;j++)
    {
    int temp=Integer.parseInt(String.valueOf(cA[i]))*Integer.parseInt(String.valueOf(cB[j]))+dot;
    tempSingle.append(temp%10);
    dot=temp/10;
    }/*
     * 处理进位
     */
    if(dot>0)
    {
    tempSingle.append(dot);
    }
    tempSingle=tempSingle.reverse();
    for(int k=0;k<i;k++)
    {
    tempSingle.append("0");
    }/*
     * 把每一个数乘以另一个数的结果调用加法方法相加起来
     */
    result=add(result,tempSingle.toString());
    }
    return result;
    }/**
     * 求n的阶乘
     */
    public String factor(String a)
    {String n="1";
    for(int i=1;i<=Integer.parseInt(a);i++)
    {
    n=multiply(n,String.valueOf(i));
    }
    return n;
    }/**
     * 主函数
     */
    public static void main(String[] args) 
    {
    Test test=new Test();
    System.out.println(test.factor("100"));}
    }
      

  2.   

    低价转让JAVA/Oracle系列的培训资料,同时转让相关经典书籍,详细介绍如下,后面有联系方式,需要的请速联系。(一律超低价转让!!!一次全购价格绝对让你心动!!!)
    一、JAVA基础培训
    1.孙鑫Java无难事(共108集  SWF格式)
    2.张孝祥Java就业培训(共56集  RM/RMVB格式)
    3.翁凯Java语言视频培训(共30讲  CSF格式)
    二、JAVA进阶培训
    1.吉林大学远程JSP培训(共32讲 AVI格式)
    2.西安电子科技大学JSP在线课程(共35讲  AVI格式)
    3.JSP数据库系统开发培训( ISO格式 内含电子书及相关源代码)
    4.刘晓涛JAVA UML核心基础(共6集  RM/RMVB格式 )
    5.J2EE专题系列讲座之Struts(共5讲  AVI格式 )
    6.赛迪网校J2EE软件工程师培训(J2EE基础13集  高级17集  案例7集)
    7.J2EE Web程序开发(共38集)
    8.天峰培训J2EE快速进阶培训视频(共33讲  AVI格式)
    三、JAVA实战项目培训录像
    1.北京尚学堂科技_马士兵老师_项目实战手把手java视频教程-坦克大战
    2.北京尚学堂科技_马士兵老师_项目实战手把手j2se视频教程-Chat
    3.北京尚学堂科技_马士兵老师_项目实战手把手BBS教程
    四、数据库方面
    1.Oracle 9i DBA中文视频远程班培训录像(共64集  AVI格式)
    *1Z0-007 Introduction to Oracle9i SQL 
    *1Z0-031 Oracle9i DBA Fundamentals I 
    *1Z0-032 Oracle9i DBA Fundamentals II 
    *1Z0-033 Oracle9i Performance Tuning
        另附全套PPT培训讲稿。
    2.中科院Oracle 10G 数据库培训录像(共18集 rmvb格式)联系方式:
    QQ:421130479
    MSN:[email protected]
    E-mail:[email protected]