百科圖片IN詞微百科科普匯名人百科有獎(jiǎng)任務(wù)百科商城

遞歸算法

開放分類:數(shù)學(xué)術(shù)語術(shù)語科學(xué)自然科學(xué)計(jì)算機(jī)術(shù)語

遞歸算法是把問題轉(zhuǎn)化為規(guī)模縮小了的同類問題的子問題。然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。

編輯摘要

目錄

1概述
2漢諾塔C語言遞歸算法
遞歸算法 - 概述

程序調(diào)用自身的編程技巧稱為遞歸( recursion)。
一個(gè)過程或函數(shù)在其定義或說明中又直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。用遞歸思想寫出的程序往往十分簡潔易懂。
一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。
注意:
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;
(2) 在使用遞增歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口,否則將無限進(jìn)行下去(死鎖)。

遞歸算法一般用于解決三類問題:
(1)數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci函數(shù))
(2)問題解法按遞歸算法實(shí)現(xiàn)。(回溯)
(3)數(shù)據(jù)的結(jié)構(gòu)形式是按遞歸定義的。(樹的遍歷,圖的搜索)

遞歸的缺點(diǎn):
遞歸算法解題的運(yùn)行效率較低。在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲。遞歸次數(shù)過多容易造成棧溢出等。

遞歸算法 - 漢諾塔C語言遞歸算法

遞歸算法 遞歸算法圖冊
漢 諾(Hanoi)塔問題:古代有一個(gè)梵塔,塔內(nèi)有三個(gè)座A、B、C,A座上有64個(gè)盤子,盤子大小不等,大的在下,小的在上(如圖)。有一個(gè)和尚想把這 64個(gè)盤子從A座移到C座,但每次只能允許移動一個(gè)盤子,并且在移動過程中,3個(gè)座上的盤子始終保持大盤在下,小盤在上。在移動過程中可以利用B座,要求 打印移動的步驟。
這個(gè)問題在盤子比較多的情況下,很難直接寫出移動步驟。我們可以先分析盤子比較少的情況。假定盤子從大向小依次為:盤子1,盤子2,...,盤子64。
如果只有一個(gè)盤子,則不需要利用B座,直接將盤子從A移動到C。
如果有2個(gè)盤子,可以先將盤子1上的盤子2移動到B;將盤子1移動到c;將盤子2移動到c。這說明了:可以借助B將2個(gè)盤子從A移動到C,當(dāng)然,也可以借助C將2個(gè)盤子從A移動到B。
如果有3個(gè)盤子,那么根據(jù)2個(gè)盤子的結(jié)論,可以借助c將盤子1上的兩個(gè)盤子從A移動到B;將盤子1從A移動到C,A變成空座;借助A座,將B上的兩個(gè)盤子移動到C。這說明:可以借助一個(gè)空座,將3個(gè)盤子從一個(gè)座移動到另一個(gè)。
如果有4個(gè)盤子,那么首先借助空座C,將盤子1上的三個(gè)盤子從A移動到B;將盤子1移動到C,A變成空座;借助空座A,將B座上的三個(gè)盤子移動到C。
上述的思路可以一直擴(kuò)展到64個(gè)盤子的情況:可以借助空座C將盤子1上的63個(gè)盤子從A移動到B;將盤子1移動到C,A變成空座;借助空座A,將B座上的63個(gè)盤子移動到C。
根據(jù)以上的分析,不難寫出程序:
void Move(char chSour,char chDest)
{
/打印移動步驟/
printf("\nMove the top plate of %c to %c",chSour,chDest);
}
Hanoi(int n,char chA,char chB,char chC)
{
/檢查當(dāng)前的盤子數(shù)量是否為1/
/盤子數(shù)量為1,打印結(jié)果后,不再繼續(xù)進(jìn)行遞歸/
if(n==1)Move(chA,chC);
/盤子數(shù)量大于1,繼續(xù)進(jìn)行遞歸過程/
else
{
Hanoi(n-1,chA,chC,chB);
Move(chA,chC);
Hanoi(n-1,chB,chA,chC);
}
}
main()
{
int n ;
/輸入盤子的數(shù)量/
printf("\nPlease input number of the plates: ");
scanf("%d",&n);
printf("\nMoving %d plates from A to C:",n);

/*調(diào)用函數(shù)計(jì)算,并打印輸出結(jié)果*/
Hanoi(n,'A','B','C');

}

如果n為4,程序輸出結(jié)果為:
Moving 4 plates from A to C:
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of C to A
Move the top plate of C to B
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of B to A
Move the top plate of C to A
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C

相關(guān)文獻(xiàn)

萬方數(shù)據(jù)期刊論文一類多折疊環(huán)面混沌吸引子 - 物理學(xué)報(bào) - 200453 ( 7 )
萬方數(shù)據(jù)期刊論文基于二叉樹思想的任意多邊形三角剖分遞歸算法 - 武漢大學(xué)學(xué)報(bào)(信息科學(xué)版) - 200227 ( 5 )
萬方數(shù)據(jù)期刊論文基于受控遞歸算法的時(shí)頻分析 - 電子科技大學(xué)學(xué)報(bào) - 201140 ( 5 )
經(jīng)典計(jì)算機(jī)算法介紹

算法是計(jì)算機(jī)科學(xué)中一門古老而常新的學(xué)科,就像一個(gè)人的思維能力一樣,其重要性對于計(jì)算機(jī)性能的分析、應(yīng)用與改進(jìn)有著至不言而喻的地位。而隨著計(jì) 算機(jī)科學(xué)技術(shù)的發(fā)展,新的算法也隨著新的應(yīng)用漸漸出現(xiàn),但總有一些算法由于其本身具有的特點(diǎn)以及對計(jì)算機(jī)科學(xué)發(fā)展做出的卓越貢獻(xiàn)而成為經(jīng)典,本任務(wù)就是要 介紹這些經(jīng)典算法。
Dijkstra算法
哈希表算法
貪婪算法
隨機(jī)化算法
排序算法 分治算法
最優(yōu)二叉樹算法
回溯算法
舍伍德算法
拉斯維加斯算法 分支界限算法
遞歸算法
統(tǒng)計(jì)算法
動態(tài)規(guī)劃算法
流水線算法 最大流
最小費(fèi)用流
蒙特卡洛算法
搜索算法
單純行算法
附圖

遞歸算
遞歸算法

點(diǎn)擊認(rèn)領(lǐng)
開放分類:數(shù)學(xué)術(shù)語術(shù)語科學(xué)自然科學(xué)計(jì)算機(jī)術(shù)語

遞歸算法是把問題轉(zhuǎn)化為規(guī)模縮小了的同類問題的子問題。然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。

編輯摘要

目錄

1概述
2漢諾塔C語言遞歸算法
遞歸算法 - 概述

程序調(diào)用自身的編程技巧稱為遞歸( recursion)。
一個(gè)過程或函數(shù)在其定義或說明中又直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。用遞歸思想寫出的程序往往十分簡潔易懂。
一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。
注意:
(1) 遞歸就是在過程或函數(shù)里調(diào)用自身;
(2) 在使用遞增歸策略時(shí),必須有一個(gè)明確的遞歸結(jié)束條件,稱為遞歸出口,否則將無限進(jìn)行下去(死鎖)。

遞歸算法一般用于解決三類問題:
(1)數(shù)據(jù)的定義是按遞歸定義的。(Fibonacci函數(shù))
(2)問題解法按遞歸算法實(shí)現(xiàn)。(回溯)
(3)數(shù)據(jù)的結(jié)構(gòu)形式是按遞歸定義的。(樹的遍歷,圖的搜索)

遞歸的缺點(diǎn):
遞歸算法解題的運(yùn)行效率較低。在遞歸調(diào)用的過程當(dāng)中系統(tǒng)為每一層的返回點(diǎn)、局部量等開辟了棧來存儲。遞歸次數(shù)過多容易造成棧溢出等。

遞歸算法 - 漢諾塔C語言遞歸算法

遞歸算法 遞歸算法圖冊
漢 諾(Hanoi)塔問題:古代有一個(gè)梵塔,塔內(nèi)有三個(gè)座A、B、C,A座上有64個(gè)盤子,盤子大小不等,大的在下,小的在上(如圖)。有一個(gè)和尚想把這 64個(gè)盤子從A座移到C座,但每次只能允許移動一個(gè)盤子,并且在移動過程中,3個(gè)座上的盤子始終保持大盤在下,小盤在上。在移動過程中可以利用B座,要求 打印移動的步驟。
這個(gè)問題在盤子比較多的情況下,很難直接寫出移動步驟。我們可以先分析盤子比較少的情況。假定盤子從大向小依次為:盤子1,盤子2,...,盤子64。
如果只有一個(gè)盤子,則不需要利用B座,直接將盤子從A移動到C。
如果有2個(gè)盤子,可以先將盤子1上的盤子2移動到B;將盤子1移動到c;將盤子2移動到c。這說明了:可以借助B將2個(gè)盤子從A移動到C,當(dāng)然,也可以借助C將2個(gè)盤子從A移動到B。
如果有3個(gè)盤子,那么根據(jù)2個(gè)盤子的結(jié)論,可以借助c將盤子1上的兩個(gè)盤子從A移動到B;將盤子1從A移動到C,A變成空座;借助A座,將B上的兩個(gè)盤子移動到C。這說明:可以借助一個(gè)空座,將3個(gè)盤子從一個(gè)座移動到另一個(gè)。
如果有4個(gè)盤子,那么首先借助空座C,將盤子1上的三個(gè)盤子從A移動到B;將盤子1移動到C,A變成空座;借助空座A,將B座上的三個(gè)盤子移動到C。
上述的思路可以一直擴(kuò)展到64個(gè)盤子的情況:可以借助空座C將盤子1上的63個(gè)盤子從A移動到B;將盤子1移動到C,A變成空座;借助空座A,將B座上的63個(gè)盤子移動到C。
根據(jù)以上的分析,不難寫出程序:
void Move(char chSour,char chDest)
{
/打印移動步驟/
printf("\nMove the top plate of %c to %c",chSour,chDest);
}
Hanoi(int n,char chA,char chB,char chC)
{
/檢查當(dāng)前的盤子數(shù)量是否為1/
/盤子數(shù)量為1,打印結(jié)果后,不再繼續(xù)進(jìn)行遞歸/
if(n==1)Move(chA,chC);
/盤子數(shù)量大于1,繼續(xù)進(jìn)行遞歸過程/
else
{
Hanoi(n-1,chA,chC,chB);
Move(chA,chC);
Hanoi(n-1,chB,chA,chC);
}
}
main()
{
int n ;
/輸入盤子的數(shù)量/
printf("\nPlease input number of the plates: ");
scanf("%d",&n);
printf("\nMoving %d plates from A to C:",n);

/*調(diào)用函數(shù)計(jì)算,并打印輸出結(jié)果*/
Hanoi(n,'A','B','C');

}

如果n為4,程序輸出結(jié)果為:
Moving 4 plates from A to C:
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of C to A
Move the top plate of C to B
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C
Move the top plate of B to A
Move the top plate of C to A
Move the top plate of B to C
Move the top plate of A to B
Move the top plate of A to C
Move the top plate of B to C

相關(guān)文獻(xiàn)

萬方數(shù)據(jù)期刊論文一類多折疊環(huán)面混沌吸引子 - 物理學(xué)報(bào) - 200453 ( 7 )
萬方數(shù)據(jù)期刊論文基于二叉樹思想的任意多邊形三角剖分遞歸算法 - 武漢大學(xué)學(xué)報(bào)(信息科學(xué)版) - 200227 ( 5 )
萬方數(shù)據(jù)期刊論文基于受控遞歸算法的時(shí)頻分析 - 電子科技大學(xué)學(xué)報(bào) - 201140 ( 5 )
經(jīng)典計(jì)算機(jī)算法介紹

算法是計(jì)算機(jī)科學(xué)中一門古老而常新的學(xué)科,就像一個(gè)人的思維能力一樣,其重要性對于計(jì)算機(jī)性能的分析、應(yīng)用與改進(jìn)有著至不言而喻的地位。而隨著計(jì) 算機(jī)科學(xué)技術(shù)的發(fā)展,新的算法也隨著新的應(yīng)用漸漸出現(xiàn),但總有一些算法由于其本身具有的特點(diǎn)以及對計(jì)算機(jī)科學(xué)發(fā)展做出的卓越貢獻(xiàn)而成為經(jīng)典,本任務(wù)就是要 介紹這些經(jīng)典算法。
Dijkstra算法
哈希表算法
貪婪算法
隨機(jī)化算法
排序算法 分治算法
最優(yōu)二叉樹算法
回溯算法
舍伍德算法
拉斯維加斯算法 分支界限算法
遞歸算法
統(tǒng)計(jì)算法
動態(tài)規(guī)劃算法
流水線算法 最大流
最小費(fèi)用流
蒙特卡洛算法
搜索算法
單純行算法
附圖

為本詞條添加視頻和組圖相關(guān)影像

開放分類:我來補(bǔ)充
數(shù)學(xué)術(shù)語 術(shù)語 科學(xué) 自然科學(xué) 計(jì)算機(jī)術(shù)語 計(jì)算機(jī)科學(xué)技術(shù)名詞 計(jì)算機(jī)算法 計(jì)算機(jī)編程
互動百科的詞條(含所附圖片)系由網(wǎng)友上傳,如果涉嫌侵權(quán),請與客服聯(lián)系,我們將按照法律之相關(guān)規(guī)定及時(shí)進(jìn)行處理。未經(jīng)許可,禁止商業(yè)網(wǎng)站等復(fù)制、抓取本站內(nèi)容;合理使用者,請注明來源于www.baike.com

歡迎加入互動百科大家庭,和互動百科超過770萬專業(yè)認(rèn)證智愿者一起,分享你的真知灼見。

如果你對大家的討論有興趣,可以點(diǎn)擊“贊”和“鄙視”的大拇指,來表達(dá)你的看法。

討論區(qū)的精彩內(nèi)容,會被用戶頂?shù)阶钌厦妫尭嗳烁惺艿酱蠹业耐扑],你注意到了嗎?

登錄后使用互動百科的服務(wù),將會得到個(gè)性化的提示和幫助,還有機(jī)會和770多萬專業(yè)認(rèn)證智愿者溝通。

互動百科用戶登錄
您也可以使用以下網(wǎng)站賬號登錄:
人人網(wǎng)賬號登錄
QQ賬號登錄
新浪微博賬戶登錄
此詞條還可添加 信息模塊
遞歸算法圖冊
WIKI熱度

該詞條未被認(rèn)領(lǐng),趕快點(diǎn)擊認(rèn)領(lǐng)吧!
編輯次數(shù):13次 歷史版本
參與編輯人數(shù):11位
最近更新時(shí)間:2013-11-13 10:48:11
貢獻(xiàn)光榮榜

更多
創(chuàng)建者:不*死鳥
我愛你的眼睛

中國語言文學(xué)副教授
無國界

大學(xué)生
hzwjh

大學(xué)生
綠領(lǐng)巾

中國語言文學(xué)講師
宮華

大學(xué)生
相關(guān)詞條

編輯
JDBC
java數(shù)據(jù)庫連接
plascal教程
遞歸可枚舉集
EOS
PHP
可計(jì)算性理論
nesC
anaconda
pascal語言教…
分類熱詞

函數(shù)
中央處理器
五角星
物理學(xué)
運(yùn)算放大器
質(zhì)量
圓周率
三角函數(shù)
壓力
相對論
請?zhí)嵋庖?br> 幫助中心
服務(wù)熱線:86-10-62303127(9:00-21:00)
關(guān)于我們
新聞中心
服務(wù)協(xié)議
互動合作
友情鏈接
招聘信息
聯(lián)系我們
站點(diǎn)地圖
知識官網(wǎng)
百科營銷
互動在線 版權(quán)所有 Powered by HDwiki ? 2015

編輯
分享

掃描二維碼用手機(jī)瀏覽詞條
保存二維碼可印刷到宣傳品
你感興趣

JDBC JDBC
遞歸可枚舉集 遞歸可枚舉集
EOS EOS
PHP PHP
關(guān)閉

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,563評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,694評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,672評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,965評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,690評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,019評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,013評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,188評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,718評論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,438評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,667評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,149評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,845評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,252評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,590評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,384評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,776評論 0 23
  • 我不知道樹會不會有它的使命,但他們似乎從來不介意它們的出身,無論是廢棄的煙囪里,還是破舊的下水管道中,還是路邊一角...
    九襄木閱讀 163評論 0 1
  • 由于本專題收錄的詩歌越來越多,為了方便大家的閱讀,漢皇特意把本專題的所有詩歌制作成了本目錄,并且會一直置頂。這樣大...
    劉漢皇閱讀 921評論 0 1
  • 剛才 驟起驟停的風(fēng)雨 僅僅是 兩場臺風(fēng)之間的 一個(gè)破折號 “天鴿”的哨音 尚在天空回響 “帕卡”隆隆的鼓聲 已從遙...
    夜跑如風(fēng)閱讀 185評論 2 7
  • 1. 阿宇,在事業(yè)單位上班,早九晚五。楊楊,護(hù)士,三班倒。兩人是大學(xué)校友還是老鄉(xiāng),都是獨(dú)自飄在遠(yuǎn)方求學(xué)的孩子。各種...
    aries諾諾閱讀 754評論 1 6