求组合数(递归版)(杨辉三角形)
时间: 2023-05-27 07:06:42 浏览: 224
以下是Python的递归版组合数(杨辉三角形)实现:
```python
def combination_recursive(n, k):
if k == 0 or k == n:
return 1
else:
return combination_recursive(n-1, k-1) + combination_recursive(n-1, k)
```
其中,`n`表示要计算的行数,`k`表示要计算的列数。
递归的思路是:根据组合数的定义,每个组合数都等于它上方和左上方的两个组合数之和。因此,可以通过递归调用函数来计算每个组合数。
具体实现中,当`k`为0或`k`为`n`时,组合数为1。否则,递归调用函数来计算上方和左上方的两个组合数之和,然后返回它们的和。
可以通过以下代码来测试上述函数:
```python
n = 5
for i in range(n):
for j in range(i+1):
print(combination_recursive(i, j), end=' ')
print()
```
输出结果为:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
这是一个5行的杨辉三角形,可以看到每个组合数都是正确的。
相关问题
JAVA递归输出杨辉三角形
在 Java 中,递归是一种常用的技术,可以用来生成杨辉三角形。杨辉三角是一个数学术语,每一行的数字是对称的,每个数字是它上面两个数字之和。以下是递归函数的一个示例,用于打印杨辉三角:
```java
public class YangHuiTriangle {
public static void print(int n) {
if (n <= 0) {
return;
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= i; j++) {
System.out.print(YangHuiTriangle.getBinomialCoefficient(i, j) + " ");
}
System.out.println();
}
}
// 递归获取杨辉三角的组合值(二项式系数)
private static int getBinomialCoefficient(int n, int k) {
if (k == 0 || k == n) {
return 1;
} else {
return getBinomialCoefficient(n - 1, k - 1) + getBinomialCoefficient(n - 1, k);
}
}
public static void main(String[] args) {
int numRows = 5; // 打印前五行
print(numRows);
}
}
```
在这个程序中,`print()` 函数负责调用 `getBinomialCoefficient()` 来计算并打印每一个位置的数字,递归地处理上一行的组合。当你运行这个程序时,会打印出前五行的杨辉三角。
用Java利用递归算法打印杨辉三角形(打印9行)。
在Java中,可以使用递归算法来打印杨辉三角形。杨辉三角形是一种数学模式,每一行都是前一行数字之和,最底层是1,从第二层开始,每一层的第一个和最后一个数字都是1。以下是打印9行杨辉三角形的一个示例:
```java
public class PascalTriangle {
public static void printPascalTriangle(int numRows) {
printRow(1, numRows); // 打印指定行数的杨辉三角形
}
// 递归函数,打印一行杨辉三角形
private static void printRow(int row, int numRows) {
if (row > numRows) { // 结束条件,当达到指定行数停止
return;
}
// 打印当前行的数字
for (int i = 0; i <= row; i++) {
System.out.print(pascalNumber(row, i) + " ");
}
System.out.println(); // 每行结束换行
// 递归打印下一行
printRow(row + 1, numRows);
}
// 计算杨辉三角形的特定位置数字(组合公式)
private static int pascalNumber(int row, int col) {
if (col == 0 || col == row) {
return 1; // 边缘情况,数字总是1
} else {
return pascalNumber(row - 1, col - 1) + pascalNumber(row - 1, col);
}
}
public static void main(String[] args) {
printPascalTriangle(9); // 打印9行
}
}
```
当你运行`printPascalTriangle(9)`时,它会打印出九行完整的杨辉三角形。
阅读全文