100C之9:在屏幕上显示杨辉三角
问题
在屏幕上显示杨辉三角如下图所示。
解决方案
/** * @file yanghuitriangle.c * @author <emacsun@163.com> * @date Wed Apr 10 10:53:28 2013 * * @brief generate the Yang hui triangle * * */ #include <stdio.h> int c( int ,int ); int main(int argc, char *argv[]) { int i,j,m; int N=9; /// the line number for (i = 1; i < N; ++i) { for (m= N -i + 1; m >=0 ;m-- ) printf (" ");/// print the space before the first 1 for (j = 1; j <=i ; ++j) printf ("%6d",c( i,j )); printf ("\n"); } return 0; } int c( int i,int j ) { if (j==1 || i==j) return 1; return c( i-1,j-1 ) + c( i-1,j ); }
注意这里在计算杨辉三角(i,j)位置上的值时使用了递归,其实也完全可以不用递归:把之前算出来的值保存下来。这是内存和运算时间的折中。
作者:emacsun
出处:http://www.cnblogs.com/chaolong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。