c++递归杨辉三角代码
时间: 2023-03-20 09:00:32 浏览: 126
以下是用 C 语言编写的递归杨辉三角代码:
```c
#include <stdio.h>
int pascal(int row, int col) {
if (col == 0 || col == row) {
return 1;
} else {
return pascal(row - 1, col - 1) + pascal(row - 1, col);
}
}
void print_pascal(int n) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j <= i; j++) {
printf("%d ", pascal(i, j));
}
printf("\n");
}
}
int main() {
int n;
printf("请输入要打印的行数:");
scanf("%d", &n);
print_pascal(n);
return 0;
}
```
这个程序中,pascal 函数使用递归来计算杨辉三角中指定位置的值,print_pascal 函数用于循环打印指定行数的杨辉三角,main 函数用于获取用户输入并调用 print_pascal 函数。
相关问题
c++杨辉三角算法描述
杨辉三角,也称为帕斯卡三角,是一种数学术题图形,在这个图形中,每个数字都是其上方两个数字相加得到的,第一行和第一列的数字都为1。在 C++ 中,可以使用动态规划的方法来实现杨辉三角。下面是一个简单的递归和迭代版本的描述:
**递归版**:
```cpp
void printPascalTriangle(int n) {
if (n <= 0) return;
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= min(i, n - i); ++j) {
cout << binomialCoeff(n, j) << " ";
}
cout << endl;
}
}
// 计算组合公式 C(n, k)
int binomialCoeff(int n, int k) {
if (k == 0 || k == n)
return 1;
else
return binomialCoeff(n - 1, k - 1) + binomialCoeff(n - 1, k);
}
```
**迭代版**:
```cpp
void printIterativePascalTriangle(int n) {
vector<vector<int>> triangle(n, vector<int>(n, 0));
for (int line = 0; line < n; ++line) {
for (int col = 0; col <= line; ++col) {
if (col == 0 || col == line)
triangle[line][col] = 1;
else
triangle[line][col] = triangle[line - 1][col - 1] + triangle[line - 1][col];
cout << triangle[line][col] << " ";
}
cout << endl;
}
}
```
以上代码分别展示了递归和迭代方式生成前`n`行杨辉三角数组。
写c++代码输出10行杨辉三角
杨辉三角是一个数学术语,它是一种二项式系数的可视化表示,每个数字由其上方和左上方的两个数字相加得出。下面是使用C++编写的一个简单程序,用于输出前10行的杨辉三角:
```cpp
#include <iostream>
using namespace std;
void printPascalTriangle(int n) {
for (int line = 0; line < n; line++) {
// 输出每行的开头空格
for (int spaces = n - line - 1; spaces > 0; spaces--)
cout << " ";
// 输出当前行的数字
for (int i = 0; i <= line; i++) {
cout << binomial_coefficient(line, i) << " ";
}
cout << endl;
}
}
// 计算组合数(即杨辉三角中的数字)
int binomial_coefficient(int n, int k) {
if (k == 0 || k == n)
return 1;
else
return binomial_coefficient(n - 1, k - 1) + binomial_coefficient(n - 1, k);
}
int main() {
int rows = 10;
printPascalTriangle(rows);
return 0;
}
```
运行此代码将输出前10行的杨辉三角。注意,由于杨辉三角计算的是组合数,这里我们使用递归公式`binomial_coefficient(n, k)`来进行计算。然而,直接递归计算效率较低,实际应用中可能会使用动态规划优化。
阅读全文