C趣味程序百例(03)楊輝三角形

字號:

9.楊輝三角形
     在屏幕上顯示楊輝三角形
     1
     1 1
     1 2 1
     1 3 3 1
     1 4 6 4 1
     1 5 10 10 5 1
     ......................................
    *問題分析與算法設(shè)計(jì)
     楊輝三角形中的數(shù),正是(x+y)的N次方冪展開式各項(xiàng)的系數(shù)。本題作為程序設(shè)計(jì)中具有代表性的題目,求解的方法很多,這里僅給出一種。
     從楊輝三角形的特點(diǎn)出發(fā),可以總結(jié)出:
     1)第N行有N+1個值(設(shè)起始行為第0行)
     2)對于第N行的第J個值:(N>=2)
     當(dāng)J=1或J=N+1時:其值為1
     J!=1且J!=N+1時:其值為第N-1行的第J-1個值與第N-1行第J個值之和
     將這些特點(diǎn)提煉成數(shù)學(xué)公式可表示為:
     1 x=1或x=N+1
     c(x,y)=
     c(x-1,y-1)+c(x-1,y) 其它
     本程序應(yīng)是根據(jù)以上遞歸的數(shù)學(xué)表達(dá)式編制的。
    *程序說明與注釋
    #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;
    }