文章
4
粉丝
422
获赞
14
访问
45.4k
#include<bits/stdc++.h>
using namespace std;
int func (int i, int j) {
if (j == 1 || j == i + 1)//每行的边界为 1
return 1;
else return (func(i - 1, j - 1) + func(i - 1, j));
/*
杨辉三角形在数组中排列为 1 1
1 2 1
1 3 3 1
1 4 6 4 1
。。。。
所以当前位置的值,为左上的值和正上的值的和。
*/
}
int main () {
int n;
while (cin >> n) {
for(int i = 1; i < n; ++i){ //行
for(int j = 1; j <= i+1; ++j) //列,第 i 行有 i+1 列
cout << func(i, j) << " ";
cout << endl;
}
}
}
//用递归复杂度会更高,也不好想 ,除非题目要求,建议用数组或队列
登录后发布评论
暂无评论,来抢沙发