求杨辉三角
给出任意值 
 输出一个杨辉三角!!!
------解决方案--------------------不会,帮顶
------解决方案----------------------C语言的   
 在屏幕上显示杨辉三角形   
 1 
 1 1 
 1 2 1 
 1 3 3 1 
 1 4 6 4 1 
 1 5 10 10 5 1 
 ......................................     
 *问题分析与算法设计 
 杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。 
 从杨辉三角形的特点出发,可以总结出: 
 1)第N行有N+1个值(设起始行为第0行) 
 2)对于第N行的第J个值:(N> =2) 
 当J=1或J=N+1时:其值为1 
 J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值 
 之和 
 将这些特点提炼成数学公式可表示为: 
 1 x=1或x=N+1 
 c(x,y)=  
 c(x-1,y-1)+c(x-1,y) 其它   
 本程序应是根据以上递归的数学表达式编制的。 
 *程序说明与注释 
 #include <stdio.h>  
 int 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 <i+2;j++) printf( "%4d ",c(i,j)); /*输出第i行的第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; 
 }     
------解决方案--------------------给出的任意值 !! 
 需用sql写
------解决方案--------------------CREATE proc pr_YangHui 
 @c int 
 as 
  /*    SQL实现显示杨辉三角    */ 
  /* 版本:   1.0              */ 
  /* 作者: Haiwer             */ 
  /* 版权所有                  */ 
  /* 2006.05.10               */ 
 set nocount on 
 if @c <2 return        --两层以下就不排了 
 declare @i int 
 declare @j int 
 declare @sql varchar(8000) 
 declare @sql1 varchar(8000) 
 declare @sql2 varchar(8000) 
 create table #(id int IDENTITY(1,1),a50000 bigint) 
 insert #(a50000) values (1)   --第一层 
 set @i=2 
 while @i <=@c 
 begin 
  --为了实现动态层,只好动态修改临时表结构 
  set @sql= 'alter table # add a '+cast(50000+@i-1 as varchar(10))+ ' bigint,a '+cast(50000-@i+1 as varchar(10))+ ' bigint '    
  exec (@sql) 
  set @sql1= ' ' 
  set @sql2= ' ' 
  set @j=@i-1 
  while @j> =0 
  begin 
   --这里判断有点乱 
   if @j=0  
    set @sql1=@sql1+ ',a '+cast(50000-@j as varchar(10)) 
   else 
    set @sql1=@sql1+ ',a '+cast(50000-@j as varchar(10))+ ',a '+cast(50000+@j as varchar(10)) 
   if @j=@i-1  
    set @sql2=@sql2+ ',1,1 ' 
   else 
    if @j=0 
     set @sql2=@sql2+ ',a '+cast(50000-@j-1 as varchar(10))+ '+a '+cast(50000-@j+1 as varchar(10)) 
    else 
     set @sql2=@sql2+ ',a '+cast(50000-@j-1 as varchar(10))+ '+a '+cast(50000-@j+1 as varchar(10))+ ',a '+cast(50000+@j-1 as varchar(10))+ '+a '+cast(50000+@j+1 as varchar(10))     
   set @j=@j-2 
  end 
  --去掉多余的逗号 
  set @sql1=right(@sql1,len(@sql1)-1) 
  set @sql2=right(@sql2,len(@sql2)-1) 
  set @sql=cast(@i-1 as varchar(10)) 
  exec( 'insert #( '+@sql1+ ') select  '+@sql2+ ' from # where id= '+@sql) 
  set @i=@i+1 
 end   
 set @i=50000-@c+1 
 set @j=50000+@c-1 
 set @sql= ' ' 
 --去最长的数据,就是为了节省显示空间 
 select @sql1=CAST(len(cast(max(a50000) as varchar(50)))+1 AS VARCHAR(10)) from # 
 while @i <=@j 
 begin 
  set @sql=@sql+ ',isnull(cast(a '+cast(@i as varchar(10))+ ' as varchar( '+@sql1+ ')), ' ' ' ') '