当前位置: 代码迷 >> J2SE >> java递归求解1-5阶乘之和,该怎么处理
  详细解决方案

java递归求解1-5阶乘之和,该怎么处理

热度:91   发布时间:2016-04-24 12:16:41.0
java递归求解1-5阶乘之和
求java代码1-5阶乘之和

------解决方案--------------------
套用2个递归
Java code
public class FindSun {    public static long getSun(int num) {        if (num == 1)            return 1;        else {            return num * getSun(num - 1);        }    }    public static long getAllSun(int num) {        if (num == 1)            return getSun(num);        else {            return getSun(num) + getAllSun(num - 1);        }    }    public static void main(String[] args) {        System.out.println(getAllSun(4));    }}
------解决方案--------------------
Java code
public class Factorial {    static int factor(int num){        if(num < 0)            return 0;        if(num == 1)            return 1;        return num * factor(num - 1);    }    public static void main(String[] args){        int sum = 0;        for(int i = 1; i <= 5; ++i)        {            sum += factor(i);                    }        System.out.println(sum);            }}
------解决方案--------------------
Java code
    public static void main(String[] args) throws Exception {        int num = 6;        int sum = 1;        for (int i = 1; i <= num; i++) {            sum *= i;        }        System.out.println(sum);    }
------解决方案--------------------
楼主,你自己好好想想,在写,这样对你来说不是太好
------解决方案--------------------
编程这条路,只有你自己去想着怎么走,你才能走好,遇到事情自己想好好的想一想,然后在去问,这样对你会又很多的好处
------解决方案--------------------
class Test 
{
public static void main(String[] args) 
{
int i=0,sum=0,temple=1;
for(i=0;i<5;i++)
{
temple*=(i+1);
sum+=temple;
}
System.out.println("the sum is:"+sum);
}
}

------解决方案--------------------
探讨

Java code

public static void main(String[] args) throws Exception {
int num = 6;
int sum = 1;
for (int i = 1; i <= num; i++) {
sum *= i;
}

S……

------解决方案--------------------
只有1L是正解

其他全部不符合题意
------解决方案--------------------
探讨
求java代码1-5阶乘之和

------解决方案--------------------
Java code
public static void main(String[] args) {        System.out.println(factorialAdd(5));    }    public static long factorialAdd(int n) {        long[] l = new long[n];        return add(1,l,n);    }        private static long add(int i,long[] l,int n) {        if(i==n) {            return factorial(i, l);        }        else {            return factorial(i, l)+add(i+1,l,n);        }    }        private static long factorial(int n,long[] l) {        if(n==1) {            return l[n-1] = 1;        }        return l[n-1] = l[n-2]*n;    }结果:153
------解决方案--------------------
效率还不错,测试了只要不超过范围越界,都能秒杀了。