常规写法,非递归。这里测试要从第二行开始输出。
#include <iostream>
using namespace std;
int Triangle[1000][1000];
void getAngle(int n){
Triangle[1][1] = 1;
Triangle[2][1] = 1;
Triangle[2][2] = 1;
for (int i = 3; i <= n; i++){
for (int j = 1; j <= i; j++){
Triangle[i][j] = Triangle[i - 1][j - 1] + Triangle[i - 1][j];
}
}
for (int i = 2; i <= n; i++){
for (int j = 1; j <= i; j++){
if (j == i)
cout << Triangle[i][j];
else
cout << Triangle[i][j] << " ";
}
cout << endl;
}
}
int main(){
int n;
while(cin >> n){
getAngle(n);
}
return 0;
}递归写法
#include <iostream>
using namespace std;
int Triangle[1000][1000];
int func(int i, int j){
if(j == 1 || i == j){
return 1;
}else{
return func(i-1, j-1) + func(i-1, j);
}
}
int main(){
int n;
while(cin >> n){
for(int i = 2; i <= n; i++){
for(int j = 1; j <= i; j++){
if(j == 1){
cout << func(i, j);
}else{
cout << " " << func(i, j);
}
}
cout << endl;
}
}
return 0;
}
京公网安备 11010502036488号