1!+2!+3!...+n!用递归,在一个方法中?

解决方案 »

  1.   

    public static int doFactorial(int n) 
    {   
      if (n < 0){ return -1; 
      }   
      if (n == 0) 
      {// 0!=1    
        return 1;   
      } 
      else if (n == 1) 
      {// 退出递归的条件 
        return 1;   } 
      else {// 满足进行递归的条件           
        return n * doFactorial1(n - 1);   
      }  
      

  2.   

    sum=1!+2!+3!...+n!,在一个方法中实现!
      

  3.   

    public static int doFactorial(int n) 
    {  
      if(n > 0){           
        return n * doFactorial1(n - 1);   
      }  
     elst if (n == 0) 
      {   
        return 1;   
      } 
      return -1;
    } public static int doSum(int n)
    {
       if(n>1)
        {
           return doSum(n-1)+doFactorial1(n);
        }
       if(n==1)
         return 1;
       else
         return -1;
    }
      

  4.   

    // 把和当参数传进去
    public class A{

     public static int doFactorial(int n,int sum) { 
       if (n < 0){ 
           return -1; 
    }
     if (n == 0) {
    // 0!=1
       return 1; 
    } else if (n == 1) {
    System.out.println(sum+1);
    // 退出递归的条件 
     return 1; 
    }
     else {// 满足进行递归的条件
      sum=sum+n*doFactorial(n-1,0);
      
      return n *doFactorial(n - 1,sum);
     } 
     }
     public static void main(String [] args){
       System.out.println(doFactorial(5,0));
     }
    }
      

  5.   

    public final class Test {
    public static void main(String[] args) {

    System.out.println(doFactorial(5).get("sum"));
    }


    static  HashMap doFactorial(int n) {

    HashMap map = new HashMap();
    if(n == 1) {
    map.put("sum", new Integer(1));
    map.put("value",new Integer(1));
    } else {

    int value = Integer.parseInt(doFactorial(n - 1).get("value").toString());
    int sum = Integer.parseInt(doFactorial(n - 1).get("sum").toString());
    map.put("sum", new Integer(n*value + sum));
    map.put("value", new Integer(n *value));
    }
    return map;
    }
    }
    已经经过测试,结果正确
      

  6.   

    public class Digui { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根
    int n = 0;
    int sum = 0;
    System.out.print("请输入n的值:");
    n = new Scanner(System.in).nextInt();
    Digui dg = new Digui();
    sum = dg.digui(n);
    System.out.println(sum);


    } public int digui(int n) {
    if(n <= 0) return 0;
    int x = 1;
    for(int i = 1; i<=n; i++ ) {
    x *= i;
    }
    return x+digui(n-1);
    }

    }
      

  7.   

    答:public static  long sumF(long n)
    {
    if(n==1)return 1;
    if(n==2)return 3;
    return (n+1)*sumF(n-1)-n*sumF(n-2);
    }
      

  8.   

    答:
    System.out.println(sumF(4));
    程序运行结果:33
      

  9.   

    public static int doFactorial(int n) 
    {   
      if (n < 0){ return -1; 
      }   
      if (n == 0) 
      {// 0!=1    
        return 1;   
      } 
      else if (n == 1) 
      {// 退出递归的条件 
        return 1;   } 
      else {// 满足进行递归的条件           
        return n + doFactorial1(n - 1);   
      }  
      

  10.   

    //1!+2!+3!...+n!
    public class FabPlus {
    int index;
    long sum = 1;
    public long fabPlus(int index) {
    if (index == 1) {
    return 1;
    }
    sum += index * fabPlus(index - 1); //sum作为每一次函数fabPlus被调用时的累加器s
    return index * fabPlus(index - 1);
    }
    public static void main(String args[]) {
    FabPlus a = new FabPlus();
    a.fabPlus(4); //测试1!+2!+3!+4!
    System.out.println(a.sum);
    }
    }
      

  11.   

    public int method(int i){
    if(i==1){
    return 1;
    }if(i==2){
    return 3;
    }
    return i*(method(i-1)-method(i-2))+method(i-1);
    }