java用排列组合公式实现杨辉三角形
时间: 2024-06-01 09:03:59 浏览: 16
Java可以使用排列组合公式实现杨辉三角形。具体实现思路如下:
1. 定义一个二维数组来存储杨辉三角形的每个数字。
2. 使用循环嵌套来遍历数组,根据排列组合公式C(m,n)=C(m-1,n)+C(m-1,n-1)计算每个数字的值。
3. 打印出杨辉三角形。
以下是Java代码实现:
```
public class YangHuiTriangle {
public static void main(String[] args) {
int n = 10; // 控制杨辉三角形的行数
int[][] arr = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i) {
arr[i][j] = 1;
} else {
arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
}
System.out.print(arr[i][j] + " "); }
System.out.println();
}
}
}
```
相关问题
用keil汇编语言实现杨辉三角形
以下是用Keil汇编语言实现杨辉三角形的代码:
```
; 杨辉三角形程序
; 编译环境:Keil uVision5
AREA YangHui, CODE, READONLY
ENTRY
MOV R0, #10 ; 控制行数
MOV R1, #1 ; 初始化第一行
MOV R2, #0 ; 初始化计数器
Loop1 MOV R3, #0 ; 初始化计数器
MOV R4, R1 ; 备份上一行
MOV R1, #1 ; 初始化当前行第一个元素为1
Loop2 ADD R3, R1 ; 计算当前行总和
MOV R5, R4 ; 恢复上一行
LSL R5, #1 ; 上一行左移一位
ADD R1, R5 ; 加上上一行左移一位的元素
ADD R4, R5 ; 更新备份上一行
ADD R2, #1 ; 计数器加1
CMP R2, R0 ; 判断是否到达指定行数
BNE Loop2 ; 如果未到达,继续计算
; 输出结果
MOV R0, #0
MOV R1, #0
MOV R2, #0
MOV R3, #0
Output ADD R2, #1 ; 计数器加1
ADD R3, R1 ; 计算当前行总和
MOV R1, R2 ; 输出当前行第一个元素
MOV R0, #1
BL OutputDec ; 输出当前行第一个元素
MOV R0, #','
BL OutputChar ; 输出逗号
MOV R0, #1
BL OutputDec ; 输出当前行总和
MOV R0, #10
BL OutputChar ; 换行
CMP R2, R0 ; 判断是否到达指定行数
BNE Output ; 如果未到达,继续输出
; 退出程序
B $
; 输出十进制数
OutputDec
STMFD SP!, {R4-R6,LR} ; 保存寄存器
MOV R4, R0 ; 备份参数
MOV R5, #0 ; 初始化计数器
MOV R6, #10 ; 设置除数为10
Loop3 SDIV R0, R4, R6 ; 取商
MUL R0, R0, R6 ; 乘以除数
SUBS R4, R4, R0 ; 取余数
ADD R0, #48 ; 转换为ASCII码
MOV R1, #0
STRB R0, [SP, #-1]! ; 压入栈中
ADD R5, #1 ; 计数器加1
CMP R4, #0 ; 判断是否结束
BNE Loop3 ; 如果未结束,继续计算
; 输出结果
MOV R0, #0
MOV R1, #0
Loop4 LDRB R0, [SP], #1 ; 弹出栈中元素
CMP R0, #0 ; 判断是否结束
BEQ EndOutputDec
BL OutputChar ; 输出当前字符
B Loop4
EndOutputDec
LDMFD SP!, {R4-R6,PC} ; 恢复寄存器并返回
; 输出字符
OutputChar
STMFD SP!, {LR} ; 保存返回地址
LDR R0, =0x40000000 ; 设置串口地址
LDRB R1, [SP, #4] ; 获取字符
STRB R1, [R0] ; 输出字符
LDMFD SP!, {PC} ; 返回
END
```
程序通过两层循环计算杨辉三角形,然后输出结果。其中`OutputDec`和`OutputChar`为输出函数,可根据具体的开发板和串口进行修改。
用java写一个杨辉三角形
以下是用Java写一个杨辉三角形的示例代码:
```java
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("请输入杨辉三角形的行数:");
int n = input.nextInt();
int[][] arr = new int[n][n];
// 初始化第一列和对角线为1
for (int i = 0; i < n; i++) {
arr[i][0] = 1;
arr[i][i] = 1;
}
// 计算其他位置的值
for (int i = 2; i < n; i++) {
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
// 打印杨辉三角形
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
```
运行结果如下:
```
请输入杨辉三角形的行数:6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```