美文网首页
C语言 | 杨辉三角形

C语言 | 杨辉三角形

作者: 大飞歌 | 来源:发表于2021-12-01 22:28 被阅读0次

    C语言 | 杨辉三角形

    在屏幕上显示杨辉三角形:

    问题分析与算法设计

    杨辉三角问题,正是(x + y)的N次方幂展开式中各项的系数。本题是程序设计总具有代表性的问题,求解的方法很多,这里给出其中一种。

    从杨辉三角形的特点出发,可以总结出:

    第N行有N+1个值(设起始行为第0行);

    对于第N行的第J个数的值:(N  >= 2)

    当J=1或J=N+1时:其值为1;

    当J != 1且J != N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和;

    将这些特点提炼成数学公式可表示为:

    $$

    c(x,y)= \begin{cases} 1, & \text {$x$ = 1 或 $x$ = N + 1} \\ c(x-1, y-1) + c(x-1, y), & \text{其他} \end{cases}

    $$

    本程序就是根据以上递归的数学表达式编写的。

    程序设计与说明

    /*******************************************************************

    *   > File Name: YangHuiTriangle.c

    *   > Author: fly

    *   > Create Time: 2021-06-16  3/24  12:44:28 +0800

    *================================================================*/

    #include <stdio.h>

    /* 求杨辉三角形中第x行第y列的值 */

    intc(intx,inty)

    {

    intz;

    /* 若为X行的第1或者第x+1列,则输出1 */

    if((y==1)||(y==x+1))return(1);

    /* 否则,其值为前1行中的第y-1列与第y列值之和 */

    z=c(x-1,y-1)+c(x-1,y);

    return(z);

    }

    intmain(intargc,char*argv[])

    {

    inti,j,n=13;

    printf("N = ");

    while(n>12)

    scanf("%d",&n);

    /* 输出n行 */

    for(i=0;i<=n;i++)

       {

    /* 控制输出第i行前面的空格 */

    for(j=0;j<12-i;j++)printf("   ");

    /* 输出第i行的第j个值 */

    for(j=1;j<i+2;j++)printf("%6d",c(i,j));

    printf("\n");

       }

    return0;

    }

    编译、运行

    [fly@fly-vmsource]$ makeYangHuiTriangle

    gcc-oYangHuiTriangle YangHuiTriangle.c-g-Wall

    [fly@fly-vmsource]$ ./YangHuiTriangle

    N=12

    1

    11

    121

    1331

    14641

    15101051

    1615201561

    172135352171

    18285670562881

    193684126126843691

    1104512021025221012045101

    1115516533046246233016555111

    1126622049579292479249522066121

    相关文章

      网友评论

          本文标题:C语言 | 杨辉三角形

          本文链接:https://www.haomeiwen.com/subject/ndpexrtx.html