![]() ![]() |
|
C趣味程序百例(03)杨辉三角形 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/4/18 13:59:19 文章录入:杜斌 责任编辑:杜斌 | |
|
|
在屏幕上显示杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 ...................................... *问题分析与算法设计 杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。 从杨辉三角形的特点出发,可以总结出: 1)第N行有N+1个值(设起始行为第0行) 2)对于第N行的第J个值:(N>=2) 当J=1或J=N+1时:其值为1 J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和 将这些特点提炼成数学公式可表示为: 1 x=1或x=N+1 c(x,y)= c(x-1,y-1)+c(x-1,y) 其它 本程序应是根据以上递归的数学表达式编制的。 *程序说明与注释 #include<stdio.h> void main() { int i,j,n=13; printf("N="); while(n>12) scanf("%d",&n); /*控制输入正确的值以保证屏幕显示的图形正确*/ for(i=0;i<=n;i++) /*控制输出N行*/ { for(j-0;j<24-2*i;j++) printf(" "); /*控制输出第i行前面的空格*/ for(j=1;j<i+2;j++) printf("%4d",c(i,j)); /*输出第i行的第j个值*/ printf("\n"); } } void int c(int x,int y) /*求杨辉三角形中第x行第y列的值*/ { int z; if((y==1)||(y==x+1)) return 1; /*若为x行的第1或第x+1列,则输出1*/ z=c(x-1,y-1)+c(x-1,y); /*否则,其值为前一行中第y-1列与第y列值之和*/ return z; } *运行结果 输入:N=12 输出:
*思考题 自行设计一种实现杨辉三角形的方法。 |
|
![]() ![]() |