求杨辉三角的前n行数据。
输入格式:
输入n(n<10)值。
输出格式:
输出杨辉三角的前n行数据,每个数据占4列。
输入样例:
5
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
该题的难点在于如何计算出杨辉三角的值。
杨辉三角,也被称为帕斯卡三角形,是一个由数字组成的三角形,最早出现在中国古代数学著作《列韦经》中。在其中,整数数列按照以下规则排列构成:首尾数字均为 1,每个数字是它上方两个数字的和。这个规律可以用以下递归关系来表示:
其中 C(n, k) 表示第 n 行第 k 个数,n 和 k 从 0 开始计数。从这个规律可以看出,杨辉三角的值可以使用递归来计算。
#include <iostream>
using namespace std;
int number(int n, int k) {
if (k == 0 || k == n) {
return 1;
}
return number(n - 1, k - 1) + number(n - 1, k);
}
int main() {
int n;
cin >> n;
for (int line = 0; line < n; line++) {
for (int i = 0; i <= line; i++) {
cout << number(line, i) << " ";
}
cout << endl;
}
return 0;
}
这段代码主要是用来打印杨辉三角的前 n 行。
使用名为 number
的递归函数来计算杨辉三角形中指定位置的值。当 k 为 0 或者 k 等于 n 时,返回 1,否则返回上一行两个相邻位置的值之和。
使用了递归的方式来计算杨辉三角形的值,并通过循环来打印出前 n 行的杨辉三角形。