重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
long factorial(int);
成都创新互联于2013年成立,先为荣县等服务建站,荣县等地企业,进行企业商务咨询服务。为荣县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
int main()
{
int i, n, c;
printf("Enter the number of rows you wish to see in pascal triangle\n");
scanf("%d",n);
for ( i = 0 ; i n ; i++ )
{
for ( c = 0 ; c = ( n - i - 2 ) ; c++ )
printf(" ");
for( c = 0 ; c = i ; c++ )
printf("%ld ",factorial(i)/(factorial(c)*factorial(i-c)));
printf("\n");
}
return 0;
}
long factorial(int n)
{
int c;
long result = 1;
for( c = 1 ; c = n ; c++ )
result = result*c;
return ( result );
}
Should be working~
每行由左而右各数,分别命名为第0元素,第1元素,....,如此第n行第r元素是 nCr.每列由左而右各数,分别命名为第0元素,第1元素,....,如此第n列第n元素是 nCr.
nCr =nCr=
n!n!
--------
r!(n-r)!r!(n-r)!
例如:第4列第1元素(n=4,r=1)是
4!
--------
1!(4-1)!
= 1*3*2*1=6
5!=5×4×3×2×1=120. 8!=8×7×6×5×4×3×2×1=40320
第n 列元素合是2n.
20= 120=1
21= 1+1 = 221=1+1=2
22= 1+2+1 = 422=1+2+1=4
23= 1+3+3+1 = 823=1+3+3+1=8
24= 1+4+6+4+1 = 1624=1+4+6+4+1=16
如果有一列的第一元素是质数,除了前后元素之外,多可以被此质数除尽。 例如, 第7列row7(1 7 21 35 35 21 7 1) 7, 21, and 35 多可被 7整除.例如, 第7列row7(1 7 21 35 35 21 7 1)7,21,and35多可被7整除. 从某列的前(后)元素(1)开始向下朝帕斯卡三角形内,任划一对角线(长度自订),则对角线所经过各数相加之和恰等于对角线最后一个数下方的数(位于下一列,但不在对角线上)。
如:
1+6+21+56 = 841+6+21+56=84
1+7+28+84+210+462+924 = 17161+7+28+84+210+462+924=1716
1+12 = 131+12=13
如果将每列的元素,由左而右,当作一个多位数整数,此数恰等于11的n次方(n是列数),如下表:
列数 指数式 = 计算值 列展开式
第0列 11^0 = 1 1
第1列 11^1 = 11 1 1
第2列 11^2 = 121 1 2 1
第3列 11^3 = 1331 1 3 3 1
第4列 11^4 = 14641 1 4 6 4 1
第5列 11^5 = 161051 1 5 10 10 5 1
第6列 11^6 = 1771561 1 6 15 20 15 6 1
第7列 11^7 = 19487171 1 7 21 35 35 21 7 1
第8列 11^8 = 214358881 1 8 28 56 70 56 28 8 1
其英文解释为:Pascal's triangle
这里还要介绍一下,帕斯卡三角形也叫贾宪三角形。
c语言的杨辉三角程序如下:
#include stdio.h
#include stdlib.h
int main()
{
int s = 1, h; // 数值和高度
int i, j; // 循环计数
scanf("%d", h); // 输入层数
printf("1\n"); // 输出第一个 1
for (i = 2; i = h; s = 1, i++) // 行数 i 从 2 到层高
{
printf("1 "); // 第一个 1
for (j = 1; j = i - 2; j++) // 列位置 j 绕过第一个直接开始循环
//printf("%d ", (s = (i - j) / j * s));
printf("%d ", (s = (i - j) * s / j));
printf("1\n"); // 最后一个 1,换行 }
getchar(); // 暂停等待
return 0;
}
扩展资料:
杨辉三角概述
前提:每行端点与结尾的数为1.
每个数等于它上方两数之和。
每行数字左右对称,由1开始逐渐变大。
第n行的数字有n项。
第n行数字和为2n。
第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。
(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。
将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。
参考资料:
百度百科-杨辉三角
杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。
这是杨辉三角:
代码如下:
#include stdio.h
#include stdlib.h
const int length = 10; // 定义杨辉三角的大小
int main(void)
{
int nums[length][length];
int i, j;
/*计算杨辉三角*/
for(i=0; ilength; i++)
{
nums[i][0] = 1;
nums[i][i] = 1;
for(j=1; ji; j++)
nums[i][j] = nums[i-1][j-1] + nums[i-1][j];
}
/*打印输出*/
for(i=0; ilength; i++)
{
for(j=0; jlength-i-1; j++)
printf(" ");
for(j=0; j=i; j++)
printf("%-5d ", nums[i][j]);
putchar('\n');
}
getchar();// 暂停
return EXIT_SUCCESS;
}
方法1:
#include stdio.h
main()
{
int i,j,a[10][10]; /*10行10列的杨辉三角*/
for(i=0;i10;i++) /*先赋值两边*/
{
a[i][0]=1;
a[i][i]=1;
}
for(i=2;i10;i++) /* 计算中间的数值 */
for(j=1;ji;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i10;i++) /* 输出部分 */
{
for(j=0;ji+1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
方法2:
#includestdio.h
main()
{
long i,j,n,k;
printf("请输入要输出的杨辉三角的行数:");
scanf("%d",n);
for(i=1;i=n;i++)
{
k=1;
for(j=1;j=i;j++)
{
printf("%5ld",k);
k=k*(i-j)/j;
}
printf("\n");
}
}