7-4 使用递归输出杨辉三角形 (18 分)输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现

输入格式:
输入一个正整数n
输出格式:
输出n行的直角三角形的杨辉三角,两个数之间用空格分隔,末尾无多余的空格。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
1
1 1
1 2 1

要输出杨辉三角形,先要了解杨辉三角形的性质下面是图片7-4 使用递归输出杨辉三角形 (18 分)输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现_第1张图片
从第三行开始 我们不妨把三角中的数定做is(x,y),x是行数,y是列数,列如is(5,3)值的数是6

规律是下面某一个数等于上两数之和如4=1+3;6=3+3;15=5+10;因此我们很容易想到可以利用递归函数

定义一个函数is(int,int)作用是返回在指定位置的三角数
主函数则用两层for循环把三角数依次输出即可

主要关系 is(m,n)=is(m-1,n-1)+is(m-1,n)
代码如下

#include 
int is(int,int);//输出数字

int main()
{
	int m,n;
	scanf("%d",&m);
	for(int z=1;z<=m;z++)//分别输出行数和列数
	{
		for (n=1;n<=z;n++) 
		{
			if(n<z)
			printf("%d ",is(z,n));
			else
			printf("%d",is(z,n));
		}
		printf("\n");
	}
}

int is(int m,int n)//
{
	int s;
	if(n==1||n==m||m==1)//当三角的前两行和在三角直角边和斜角边都输出1
	s=1;
	else
	{
		s=is(m-1,n-1)+is(m-1,n);//这是递归函数
	}
	
	return s;
 } 

运行结果如下
7-4 使用递归输出杨辉三角形 (18 分)输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现_第2张图片

你可能感兴趣的:(7-4 使用递归输出杨辉三角形 (18 分)输出杨辉三角形,用户输入一个正整数n,输出n行的直角三角形的杨辉三角。要求使用递归函数实现)