如何使用C++实现杨辉三角的递推算法来生成并显示其内容?
时间: 2024-10-21 21:01:38 浏览: 57
在C++中,可以使用递归和动态数组来实现杨辉三角(Pascal's Triangle)。杨辉三角是一个数学术语,每一行都是前一行的数字之和,第一行和第二行分别只有1。以下是简单的递归函数实现:
```cpp
#include <iostream>
using namespace std;
// 动态数组用于存储当前行的数据
int triangle[100][100];
// 递归函数计算杨辉三角的值
int pascal(int row, int col) {
if (row == 0 || col == 0 || col > row) {
// 边界条件:行数、列数超出范围,返回0
return 0;
}
else if (col == 1 || col == row) {
// 首尾元素总是1
return 1;
}
else {
// 根据递推公式,每个元素等于上一行对应的两个元素相加
return pascal(row - 1, col - 1) + pascal(row - 1, col);
}
}
// 主函数用于生成并显示杨辉三角
void printPascal(int rows) {
for (int i = 0; i <= rows; ++i) {
for (int j = 0; j <= i; ++j) {
cout << triangle[i][j] << " ";
}
cout << endl;
}
}
int main() {
int num_rows;
cout << "请输入杨辉三角的行数:";
cin >> num_rows;
// 初始化三角形
for (int i = 0; i < num_rows; ++i) {
triangle[i][0] = triangle[i][i] = 1;
}
// 使用递归填充三角形
for (int row = 1; row < num_rows; ++row) {
for (int col = 1; col < row; ++col) {
triangle[row][col] = pascal(row, col);
}
}
// 打印杨辉三角
printPascal(num_rows);
return 0;
}
```
当你运行这个程序时,它会提示输入杨辉三角的行数,然后生成并显示相应的三角形。
阅读全文