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;
}
在屏幕上顯示楊輝三角形
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;
}