每乙個新來的員工,我都會談到,軟體設計,不應該拘泥於具體的語言,正確的設計思想,才是提高自身能力的根本,比如遞迴,通常認為sql 語言無法實現,但事實是否如此?非也,如下所示,個人寫的乙個用sql server儲存過程實現的漢諾塔程式:
if object_id('hannuota') is not null
drop proc hannuota
go--@n表示層數,@i表示步驟,@from表示要移動的盤子位置,@temp交換用的柱子,@to,目標柱子
create proc hannuota
@from varchar(1),@temp varchar(1),@to varchar(1),@n int,@i int output
asbegin
declare @str varchar(100)
if @n=0 return
set @n=@n-1
exec hannuota @from=@from,@temp=@to,@to=@temp,@n=@n,@i=@i output
set @str=cast(@i as varchar(10))+':'+@from+'--->'+@to
print @str
set @i=@i+1
exec hannuota @from=@temp,@temp=@from,@to=@to,@n=@n,@i=@i output
endgo
exec hannuota @from='a',@temp='b',@to='c',@n=3,@i=1
執行結果:
1:a--->c
2:a--->b
3:c--->b
4:a--->c
5:b--->a
6:b--->c
7:a--->c
遞迴思想與遞迴程式設計
今天來談談遞迴程式設計,我想參與過程式設計經歷的,或者學過程式設計的都應該了解遞迴,遞迴思想在解決一些問題上顯得尤為方便,能發出意想不到的效果,但是遞迴程式設計顯然難度比較大,沒有非常豐富的程式設計經驗或者對遞迴有過很深的理解,不能隨手就寫出遞迴的 所以今天就來談談遞迴怎麼用?遞迴的程式設計模式就是...
程式設計思想之遞迴
我之前寫過關於遞迴演算法 的博文,但作為程式設計思想系列的文章不得不再對它進行進一步深入的剖析。因為它是一種簡單 常用又重要的一種程式設計思想。舉乙個通俗的例子 有乙個8倆重的蘋果要你切成重量相等的若干份,每乙份的重量不能大於1倆。你肯定會想到這樣做 1.第一刀先把乙個蘋果切成重量均等的2份a1和a...
常用演算法思想複習之《遞迴與分治》
1 概述 在解決一些複雜問題,特別是解決一些規模較大的問題時,常常將問題進行分解。具體來說,就是將乙個規模較大的問題分割成規模較小的同類問題,然後將這些小的問題逐個加以解決,最終也就將整個大的問題解決了。這種分而治之的思想稱為分治的思想。所謂遞迴演算法,就是一種直接或間接地呼叫原演算法本身的一種演算...