方法一:迭代生成法
```c
include
int fac(int number) {
if (number == 1) return 1;
else if (number == 0) return 1;
else return fac(number-1)*number;
}
int main() {
int number;
printf("Enter the number of rows: ");
scanf("%d", &number);
for (int i = 1; i <= number; i++) {
for (int j = 0; j < number - i; j++) {
printf(" ");
}
for (int k = 0; k <= i; k++) {
int temp = fac(i - 1) / (fac(k) * fac(i - k - 1));
printf("%4d", temp);
}
printf("\n");
}
return 0;
}
```
方法二:动态规划法
```c
include include int generate(int numRows, intreturnSize, int returnColumnSizes) { int *returnSize = numRows; *returnColumnSizes = (int*)malloc(numRows * sizeof(int)); for (int i = 0; i < numRows; i++) { triangle[i] = (int*)malloc((i + 1) * sizeof(int)); triangle[i] = triangle[i][i] = 1; for (int j = 1; j < i; j++) { triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]; } (*returnColumnSizes)[i] = i + 1; } return triangle; } int main() { int numRows; printf("Enter the number of rows: "); scanf("%d", &numRows); int for (int i = 0; i < numRows; i++) { for (int j = 0; j <= i; j++) { printf("%4d", triangle[i][j]); } printf("\n"); free(triangle[i]); } free(triangle); free(numRows); return 0; } ``` 方法三:直接计算法 ```c include int main() { int rows, coef = 1; printf("Enter the number of rows: "); scanf("%d", &rows); for (int i = 0; i < rows; i++) { for (int space = 1; space <= rows - i; space++) { printf(" "); } for (int j = 0; j <= i; j++) { if (j == 0 || i == 0) coef = 1; else coef = coef * (i - j + 1) / j; printf("%4d", coef); } printf("\n"); } return 0; } ``` 方法四:预处理数组法