7.杨辉三角形

来源:互联网 发布:iphone6s蜂窝数据设置 编辑:程序博客网 时间:2024/04/27 05:34
         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;
原创粉丝点击