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





