C语言杨辉三角(组合数)

在这里插入图片描述在杨辉三角中每个数字都是上方与它相邻的两个数之和,实际上也可以用组合总数表示

在这里插入图片描述在这里插入图片描述

#include<stdio.h>
//定义阶乘 
int factor(int i) {
	int j,sum=1;
	for(j=1; j<=i; j++)
		sum=sum*j;
	return sum;
}
//定义组合 
int group(int i,int j) {
	int k;
	k=factor(j)/(factor(i)*factor(j-i));
	return k;
}
int main() {
	int n,i,j;
	while(scanf("%d",&n)!=EOF) {
		for(i=0; i<n; i++) {
			for(j=1; j<=(n-i); j++) {	//打印空格 
				printf(" ");
			}
			for(j=0; j<=i; j++) {
				printf("%4d",group(j,i));
			}
			printf("\n");
		}
	}
	return 0;
}

为什么杨辉三角会出现组合数呢?
首先我们吧杨辉三角抛在一边,看一下下面格子状的路线从起点到终点有多少种方法可以走
在这里插入图片描述
在这里插入图片描述从起点到终点要走五步,其中向右必须要走3步,也就是从5步中选3步的组合


版权声明:本文为weixin_46164829原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。