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

最近周末在参加嵌入式培训,才学到C语言函数部分,,用VS 2018软件写的。收集整理如下

/*

3.	打印出杨辉三角形(要求打印出10行如下图)
1
1  	1
1	2  	1
1  	3  	3  	1
1  	4  	6  	4  	1
……………….

*/


#pragma warning(disable:4996)
#include <stdio.h>

int yhsj(int n,int m);
int putdata(int n, int m);

int main()
{
	int n =10; //n行
	int m =10; //m列
	
	putdata(n, m);
	return 0;
}

int putdata(int n, int m)
{
	int i, j;
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= m; j++)
		{
			if (j > i)  //如果列大于行,打印换行并中断函数
			{
				printf("\n");
				break;
			}
			printf("%-4d", yhsj(i, j)); //打印某行某列的值

		}
	}
	return 0;
}

int yhsj(int n,int m)    //单独返回某行某列的值
{


	int rec;
	if ((m == 1) || (n == 2 && m == 2) || (n == m)) //第一列,第二行,还有行列相同的时候都为1.
	{
		return 1;
	}

	else //if(m < n)     //列小于行才有数字。
	{

		rec = yhsj(n - 1, m - 1) + yhsj(n - 1, m);
		return rec;

	}
}

/*

1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5   10  10  5   1
1   6   15  20  15  6   1
1   7   21  35  35  21  7   1
1   8   28  56  70  56  28  8   1
1   9   36  84  126 126 84  36  9   1   请按任意键继续. . .
*/

猜你喜欢

转载自blog.csdn.net/wuxuonline/article/details/82186367
今日推荐