欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > 34.任意行数杨辉三角 C语言

34.任意行数杨辉三角 C语言

2024/11/14 15:02:30 来源:https://blog.csdn.net/S13461120713/article/details/143720329  浏览:    关键词:34.任意行数杨辉三角 C语言

主要是杨辉三角的公式转化为代码。杨辉三角同样是很难求,这个难在数学上而不是代码上。

C(n-1,m-1)=(n-1)!/(n-m)!/(m-1)!杨辉三角每行每个数的值,n是行,m是个

coef = coef * (i - j + 1) / (j - 1); 

前面这两个公式乍一看其实也看不出什么关联

推导过程大致如下:
//A(n,m)= m x(m - 1)x(m - 2)x(m - 3)x ... x(m - n + 1)=m!/(m-n)!
//C(4,8)=A(4,8)/A(4,4)=8!/4!/4!
//C(n-1,m-1)=(n-1)!/(n-m)!/(m-1)!杨辉三角每行每个数的值,n是行,m是个
//然后分别求,n行m个,和n行m1个的表达式,m1等于m+1,
//然后利用n行m个的值、n、m1这三个值表达出n行m1个的值
//再写入代码中,这个是数学过程,没有办法看代码看懂

#define _CRT_SECURE_NO_WARNINGS// 取消有关使用不安全函数的编译器警告
#include <stdio.h>// 包含标准输入输出库
int main()
{// 定义变量:行数,系数,空格数,循环变量i和jint rows, coef = 1, space, i, j;printf("行数: ");// 提示用户输入行数scanf("%d", &rows);// 读取用户输入的行数// 外循环控制行数,从1到rowsfor (i = 1; i <= rows; i++){// 内循环控制前导空格的数量for (space = 1; space <= rows - i + 1; space++)printf("  ");// 打印两个空格// 内循环打印杨辉三角形的每个数for (j = 1; j <= i; j++){if (j == 1 || i == 1){coef = 1;// 每行第一个元素和第一行的元素都为1}else{// 根据公式计算杨辉三角形的系数coef = coef * (i - j + 1) / (j - 1); }printf("%4d", coef);// 打印系数,宽度为4}printf("\n");// 每行结束后换行}return 0;// 程序结束}//A(n,m)= m x(m - 1)x(m - 2)x(m - 3)x ... x(m - n + 1)=m!/(m-n)!
//C(4,8)=A(4,8)/A(4,4)=8!/4!/4!
//C(n-1,m-1)=(n-1)!/(n-m)!/(m-1)!杨辉三角每行每个数的值,n是行,m是个
//然后分别求,n行m个,和n行m1个的表达式,m1等于m+1,
//然后利用n行m个的值、n、m1这三个值表达出n行m1个的值
//再写入代码中,这个是数学过程,没有办法看代码看懂

输出结果

行数: 711   11   2   11   3   3   11   4   6   4   11   5  10  10   5   11   6  15  20  15   6   1

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com