杨辉三角形(pascal triangle),winxp+dev_c++4环境下实现:
1:利用公式函数化实现:
2:利用二维数组实现:
比较而言,下面一种方法更简洁,函数化实现需要很多次调用函数和多次循环计算。
1:利用公式函数化实现:
#include
<
stdio.h
>
#define M 10
int factor( int m)
... {
int mult=1,i;
for(i=1;i<=m;++i)
mult*=i;
return mult;
} // 计算阶乘;
int pascal( int m, int n)
... {
return factor(m)/(factor(n)*factor(m-n));
} // 利用公式计算每一个位置上元素的值;
int main( void )
... {
int i,j;
for(i=0;i<M;++i)
...{
for(j=0;j<i+1;++j)
printf("%d ",pascal(i,j));
putchar(' ');
}
system("pause");
return 0;
} // funtion way
#define M 10
int factor( int m)
... {
int mult=1,i;
for(i=1;i<=m;++i)
mult*=i;
return mult;
} // 计算阶乘;
int pascal( int m, int n)
... {
return factor(m)/(factor(n)*factor(m-n));
} // 利用公式计算每一个位置上元素的值;
int main( void )
... {
int i,j;
for(i=0;i<M;++i)
...{
for(j=0;j<i+1;++j)
printf("%d ",pascal(i,j));
putchar(' ');
}
system("pause");
return 0;
} // funtion way
2:利用二维数组实现:
#define
M 10
#include < stdio.h >
int main()
... { int pascal[M][M];
int i,j;
printf("1 ");
printf("1 1 ");
pascal[0][0]=1;
pascal[0][1]=1;
for(i=1;i<M-1;++i)//注意将运算后得到的值存储以便下次运算使用;
...{ pascal[i][0]=1;
printf("%d ",pascal[i][0]); //the 1st num 1
for(j=1;j<i+1;++j)
...{
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];//计算中间里面的值;
printf("%d ",pascal[i][j]);
}
pascal[i][j]=1;
printf("%d ",pascal[i][j]); //the last num 1;
}
system("PAUSE");
return 0;
}
#include < stdio.h >
int main()
... { int pascal[M][M];
int i,j;
printf("1 ");
printf("1 1 ");
pascal[0][0]=1;
pascal[0][1]=1;
for(i=1;i<M-1;++i)//注意将运算后得到的值存储以便下次运算使用;
...{ pascal[i][0]=1;
printf("%d ",pascal[i][0]); //the 1st num 1
for(j=1;j<i+1;++j)
...{
pascal[i][j]=pascal[i-1][j-1]+pascal[i-1][j];//计算中间里面的值;
printf("%d ",pascal[i][j]);
}
pascal[i][j]=1;
printf("%d ",pascal[i][j]); //the last num 1;
}
system("PAUSE");
return 0;
}