Java实现动态杨辉三角形、从键盘输入n,要求打印出1!+2!+3!+···+n!的值

文章展示了如何使用Java编程语言实现杨辉三角的生成算法,通过for循环构建每一层的数值,并打印输出。同时,文章还介绍了计算1到n的阶乘和的算法,利用do-while循环获取用户输入的正整数n,然后通过for循环计算阶乘并累加到总和中。

1.在杨辉三角形中,已知每一行数字的第一个和最后一个均为1,其余的位置的值为其上与其上左相邻的两个数之和,因此可以写出杨辉三角算法:

for(int i =0;i<arr.length;i++) {
			arr[i] =  new int [i+1];//为下一行开辟空间
			for(int j = 0;j<arr[i].length;j++) {//j的值表示列
				if(j==0 || j==i) {
					arr[i][j] = 1;
				}else {
					arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
				}
			}
			
		}

代码中使用一个if-else语句,判断杨辉三角形中特定位置的值,遍历出每一个值后再次使用for循环打印出每一个位置的数字,总代码如下:

import java.util.Scanner;

public class tiku2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入杨辉三角形的层数level:");
		int level = sc.nextInt();
		int arr[][] = new int[level][level];
		for(int i =0;i<arr.length;i++) {
			arr[i] =  new int [i+1];
			for(int j = 0;j<arr[i].length;j++) {
				if(j==0 || j==i) {
					arr[i][j] = 1;
				}else {
					arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
				}
			}
			
		}
		System.out.println(level+"层的杨辉三角形打印如下:");
		for(int i = 0;i<arr.length;i++) {
			for(int j=0;j<arr[i].length;j++) {
				System.out.print(arr[i][j]+"\t");
			}System.out.println();
		}
		
		}
}

注意:打印完每一个数字后不能换行,使用print即可,当完成一个for循环之后,即打印完一行数字之后再换行,在for循环外使用一个  System.out.println();  来实现。

2.要求输入一个数字n,求出1!+2!+3!+···+n!的值,这道题的重点在于了解算法,理解式子可以得到,当n的值每增加1时,对应的n的阶层就为((n-1)!)*n,即6!=((6-1)!)*6,所以每次n都需加1的情况下就可以使用一个for循环,即:

for(int i=1;i<=n;i++) {
			s = s*i;   //s的值为1!+2!+3!+···+n!中的每一个个体,求出每一个个体之后将其相加即可
			sum = sum+s;  //sum为所有个体的和

由于要输入n的值,而n的值为正数,所以可以使用do while循环来实现,总代码如下:

import java.util.Scanner;

//输入一个数n,求出1!+2!+3!+···+n!
public class tiku1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int sum = 0,n,s = 1;
		do {
			System.out.println("输入数字n");
			n = sc.nextInt();			
		}while(n<=0);
		for(int i=1;i<=n;i++) {
			s = s*i;
			sum = sum+s;
		}
		System.out.println(sum);
	
		}
}

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值