用递归思想和C语言实现杨辉三角
时间: 2024-09-15 07:04:48 浏览: 47
在C语言中,杨辉三角是一种经典的动态规划和递归问题。它是一个数阵,每个数字都是前两个数字之和。下面是使用递归思想和C语言实现的一个简单示例:
```c
#include <stdio.h>
// 用于打印杨辉三角的函数
void printPascal(int row) {
int triangle[row][row];
// 初始化第一行和第一列
for (int i = 0; i <= row; i++) {
triangle[0][i] = 1;
if (i > 0)
printf("%d ", triangle[0][i]);
else
printf("%d", triangle[0][i]); // 第一行只有一个元素,不需要空格
}
printf("\n");
// 递归计算并打印每一行
for (int i = 1; i < row; i++) {
for (int j = 0; j <= i; j++) {
if (j == 0 || j == i)
triangle[i][j] = 1; // 底部和顶部的单元格直接赋值为1
else
triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j]; // 计算当前元素的值
printf("%d ", triangle[i][j]);
}
printf("\n");
}
}
int main() {
int rows = 5; // 指定要生成的杨辉三角的行数
printPascal(rows);
return 0;
}
```
这个程序首先初始化第一行和第一列,然后通过两层循环递归计算并打印每一行的数字。当递归到最后一行时,由于杨辉三角的特性,所有内部元素都会自动为1。
阅读全文