求阶层的和

求阶层的和:


package com.zrrd;

import java.util.Scanner;

import javax.swing.JCheckBox;

public class JieCengHe {
	
	
	public static void main(String[] args) {
		//求1+2!+3!+...+20!的和
		/*
		 * 思路:
		 * 先写阶层的方法,然后遍历循环求和
		 */
		System.out.println("请输入截止的数字:");
		Scanner scanner=new Scanner(System.in);
		int nextInt = scanner.nextInt();
		JieCengHe jch=new JieCengHe();
		System.out.println("从1到"+nextInt+"的阶层的和为:"+jch.qiuHe(nextInt));

	}
	
	//求阶层
	public long jieCeng(int  n){
		if (n==1) {
			return 1;
		}else{
			return jieCeng(n-1)*n;
		}
	}
	
	//求和
	public long qiuHe(int m){
		JieCengHe jch=new JieCengHe();
		long sum=0;
		for (int i = 1; i <=m; i++) {
			long l = jch.jieCeng(i);
			sum+=l;
		}
		return sum;
	}

}

控制台输出结果:

求阶层的和_第1张图片

由于long的取值范围是-2^63到2^63减1

-9223372036854775808~~9223372036854775807

所以只能计算到20的阶层的累加和,如果想要求更大的数的阶层

的累加和需要将long替换为BigInteger和BigDecimal



你可能感兴趣的:(算法,基础,java,算法,基础)