c语言实现打印杨辉三角形

对于这样的一个图案我们要进行打印杨辉三角形,那么在这个时间点相信我们已经学过了函数的递归和数组的使用;

针对这个图形我们会观察到 第i行的第j列的元素他等于第i-1行的第j-1个元素和第j个元素之和

那么想到这里我们就会考虑使用一个二维数组来实现这段代码

#include<stdio.h>
int main()
{
	int arr[100][100];
	int n, i = 0, j = 0;
	scanf("%d", &n);
	for (i = 0;i < n;i++) {
		for (j = 0;j <= i; j++) {
			if (i == 0 || j == 0 || i == j) arr[i][j] = 1;
			else arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
		}
	}
	for (i = 0;i < n;i++) {
		for (j = 0;j <= i; j++) {
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

那么我们也同样学习了递归函数,所以我们尝试着用递归来书写一下,那么不妨让我们先来看一下这段代码,接下来我会为大家逐一解释;

#include <stdio.h>

// 递归函数计算杨辉三角形的特定值
int pascal(int row, int col) {
    if (col == 0 || col == row) {
        // 基本情况:边缘的值都是1
        return 1;
    }
    else {
        // 递归调用:计算上一行的两个值的和
        return pascal(row - 1, col - 1) + pascal(row - 1, col);
    }
}

// 主函数
int main() {
    int n, i, j;
    printf("请输入杨辉三角形的行数: ");
    scanf("%d", &n);

    // 打印杨辉三角形
    for (i = 0; i < n; i++) {
        for (j = 0; j <= i; j++) {
            printf("%d ", pascal(i, j));
        }
        printf("\n");
    }

    return 0;
}

我们先来看主函数部分在这部分我们使用两个循环,外层循环控制行数,内存循环控制列数。其中对于每一行来说其其列数等于其行数,所以在这里我们给出一个循环条件就是就j<=i;所以我们每次调用这个pascal函数的时候都会返回一个值打印在屏幕上,所以我们给pascal函数两个变量i,j分别代表他的行和列;

接下来我们就进入了pascal函数体的部分,在这一部分 如果我们是在第一列或者最后一列的话我们就打印1,如果不是的话我们就进入循环的递归调用,这一行要返回的数值就等于上一行的前一个,和上一行正对着的这个数字之和,所以这样我们就利用函数的递归调用实现了杨辉三角形的打印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值