C趣味程序百例(03)杨辉三角形

文章作者 100test 发表时间 2007:03:10 17:28:57
来源 100Test.Com百考试题网


9.杨辉三角形
在屏幕上显示杨辉三角形

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
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 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
输出:


*思考题
自行设计一种实现杨辉三角形的方法。


相关文章


C趣味程序百例(03)数制转换
C趣味程序百例(02)求最大数高次方数的尾数
C趣味程序百例(03)杨辉三角形
C趣味程序百例(03)借书方案知多少
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛