mysql杨辉三角_实现杨辉三角
用存儲過程和臨時表來寫,主要是想最后一個select出來結果,而且排成想要的三角形形狀。 由于BIGINT數據的限制,最多可以顯示67層。 結果 id ----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 1 1 2 1 1 3 1 2 1 4
用存儲過程和臨時表來寫,主要是想最后一個select出來結果,而且排成想要的三角形形狀。
由于BIGINT數據的限制,最多可以顯示67層。
結果
id
----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
1 1
2 1 1
3 1 2 1
4 1 3 3 1
5 1 4 6 4 1
6 1 5 10 10 5 1
7 1 6 15 20 15 6 1
8 1 7 21 35 35 21 7 1
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+')),'''')'
set @i=@i+1
end
exec ('select id'+@sql+' from # order by id')
drop table #
GO
--調用
exec #pr_YangHui 8
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的mysql杨辉三角_实现杨辉三角的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell+mysql获取数据库名_sh
- 下一篇: 帅康油烟机价目表帅康油烟机报价