怎么用c编程杨辉三角

时间:2025-01-28 11:56:14 网络游戏

方法一:迭代生成法

```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) {

inttriangle = (int)malloc(numRows * sizeof(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);

inttriangle = generate(numRows, &numRows, &numRows);

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;

}

```

方法四:预处理数组法