重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public class Qiuhe {
公司主营业务:网站建设、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出铁锋免费做网站回馈大家。
public Qiuhe() {
}
public static void main(String args[]){
int sum = 0;//用来存放1!+2!+3!+4!+.....+10!的值,初始值为零
for(int i = 0; i 10; i++ ){
sum += jiecheng(i + 1);//调用jiecheng()函数算出i+1的阶乘,加到sum当中
}
System.out.println("1!+2!+3!+4!+.....+10!的值为:" + sum);
}
public static int jiecheng(int n){//算阶乘的函数
if(n == 1 || n == 0){
return 1;
}
else return n * jiecheng(n - 1);
}
}
2000的阶乘太大了,一般的方法是计算不出来的 )_(
class Factorial
{
public static void main(String[] args)
{
int n = 5; //假设输入的数是 5
int sum = 1;
if (n 0)
{
System.out.println("n is overflow");
return ;
}
else if (n == 0)
{
n = 0;
}
else {
for (int i = 1; i = n ; i ++)
{
sum = sum * i;
}
}
System.out.println("n! = " + sum);
}
}
阶乘的公式是
n!=n*(n-1)*(n-2)....*2*1
这个公式可以通过一个java的循环来实现,也就是第一种方法。
for(int i=number; i0;i--)
这个循环在i=0的时候结束, 而阶乘的结果通过result*=i来计算。
public static int compute(int number)
{
int result=1;
for(int i=number;i0;i--){
result*=i;
}
return result;
}
public static void main(String[] args)
{
System.out.println(compute(30)); //789912231223232323211
}
第二种是通过递归来实现阶乘。
递归就是方法调用自身, 最终通过一个出口来结束程序的调用。
这个出口要保证程序不出现死循环。
在上面的f(x)- n*f(x-1)这里, 出口就可以设置为
if(1==number)
{return 1;}
代码实现:
public static int cur(int number){
if(number!=0){
return number*cur(number-1);
}else return 1;
}
给你写了下代码,在主函数里调用的时候需要多少以内的阶乘相加就把参数写成多少就好。代码如下:
public static long factorial(int n) {//求n的阶乘
if(n == 1)
return 1;
return n * factorial(n - 1);
}
public static void print(int n) {//输出等号左边,比如“1! +2!”
if(n == 1) {
System.out.print("1!");
return;
}
print(n - 1);
System.out.print(" +" + n + "!");
}
public static void doFactorSum(int n) {//循环执行,输出最终结果
long result = 0;
for(int i = 1; i = n; i++) {
result += factorial(i);
print(i);
System.out.println("=" + result);
}
}
public static void main(String[] args) {
doFactorSum(20);//调用,得到最终结果
}
有什么问题再追问。