C语言:使用递归函数打印杨辉三角

目录

1. 分析杨辉三角

2. 各段程序代码

        2.1 主体部分

        2.2 编写函数 yang 打印杨辉三角形两条侧边上的 1,并计算中间部分各项的值

3. 完整程序代码及打印结果     


1. 分析杨辉三角

         如图截取部分杨辉三角,先将杨辉三角分为两部分。一份由三角形两条侧边上的 1所组成   (代码见2.2),另一部份由三角形中间部分各项所组成(代码见2.2)。

         不难看出,从第三行开始,三角形第 n 行中的第 k 项值的大小,假设记作(n,k),则此时有(n,k)=(n-1,k-1)+(n-1,k),据此可完成程序代码的编辑。

2. 各段程序代码

        2.1 主体部分

int main()
{
	int n, p, j, k;
	printf("输入需要打印杨辉三角的行数:");
	scanf("%d", &p);						//设定行数为p行
	for (n = 1; n <= p; n++)              
	{
		for (j = 0; j < 30 - 2 * n; j++)   //打印各行开头的空格,空格数随行数按规律递减
			printf(" ");
		for (k = 1; k <= n; k++)           //打印各行中的各项
			printf("%4d", yang(n, k));     //调用函数yang,为结果更加美观,这里打印格式设置为 %4d
		printf("\n");                      //每打印完一行后换行
	}
	return 0;
}

        2.2 编写函数 yang 打印杨辉三角形两条侧边上的 1,并计算中间部分各项的值

int yang(int x, int y)
{
	int z;
	if (y == 1 || y == x)                       //各行首项和最后一项值为1
		z = 1;  
	else
		z = yang(x - 1, y - 1) + yang(x - 1, y);//由上述对杨辉三角的分析可知
	return z;
}

3. 完整程序代码及打印结果     

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int yang(int x, int y)
{
	int z;
	if (y == 1 || y == x)                       //各行首项和最后一项值为1
		z = 1;  
	else
		z = yang(x - 1, y - 1) + yang(x - 1, y);//由上述对杨辉三角的分析可知
	return z;
}
int main()
{
	int n, p, j, k;
	printf("输入需要打印杨辉三角的行数:");
	scanf("%d", &p);						//设定行数为p行
	for (n = 1; n <= p; n++)              
	{
		for (j = 0; j < 30 - 2 * n; j++)   //打印各行开头的空格,空格数随行数按规律递减
			printf(" ");
		for (k = 1; k <= n; k++)           //打印各行中的各项
			printf("%4d", yang(n, k));     //调用函数yang,为结果更加美观,这里打印格式设置为 %4d
		printf("\n");                      //每打印完一行后换行
	}
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值