下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
學(xué)號:15051415
計(jì)算機(jī)科學(xué)與技術(shù)論文
C語言中FOR循環(huán)與遞歸的效率問題
學(xué)生姓名
馮冠璽
班級
院系
計(jì)算機(jī)科學(xué)與技術(shù)四班計(jì)算機(jī)學(xué)院
摘要:
在多數(shù)情況下,C語言中遞歸由于其易讀性(對于新手來說,還有可裝逼性),而比較受到青睞。然而,在一些情況下,遞歸由于其效率的低下而嚴(yán)重影響到程序的用戶體驗(yàn)。
關(guān)鍵詞:C語言,效率,遞歸
下面通過一個簡單的程序來放大這種效率低下的問題:
實(shí)驗(yàn)平臺,工具:
在WIN10的平臺下,采用C-free5.0編譯器來編寫相應(yīng)的C程序,直觀地憑借輸出結(jié)果所需時間來比較遞歸與for循環(huán)的效率。
//該程序是求斐波那契數(shù)列第n個數(shù)的值
#include<stdio.h>
intdigui(intn)
{
if(n==1||n==2)
return1;
else
return(digui(n-1)+digui(n-2));
}
intmain()
{
inta;
scanf("%d”,&a);
printf("%d",digui(a));
}
經(jīng)過測試,當(dāng)n在37之后,開始出現(xiàn)人眼可觀的明顯卡頓。
〃通過FOR循環(huán)來計(jì)算
#include<stdio.h>intmain()
{
inta[100]={1,1},i,n;
scanf("%d",&n);
if(n==1||n==2)
printf("%d",a[n-1]);
if(n>=3){
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];
printf("%d",a[i-1]);
}
}
經(jīng)測試,在int整形數(shù)據(jù)類型所能輸出的數(shù)字范圍內(nèi)(即n小于等于48),無任何卡頓。
那么為什么會出現(xiàn)這樣的情況?
許多問題是以遞歸的形式進(jìn)行解釋的,這只是因?yàn)樗确沁f歸形式更為清晰。但是,這些問題的迭代實(shí)現(xiàn)往往比遞歸實(shí)現(xiàn)效率更高,雖然代碼的可讀性可能稍差一些,當(dāng)一個問題相當(dāng)復(fù)雜,難以用迭代形式實(shí)現(xiàn)時,此時遞歸實(shí)現(xiàn)的簡潔性便可以補(bǔ)償它所帶來的,運(yùn)行時開銷。
然而,對于極端的情況(斐波那契數(shù)列),它使用遞歸步驟計(jì)算digui(n-l)和digui(n-2)。但是,在計(jì)算digui(n-1)時也將計(jì)算digui(n-2)。每個遞歸調(diào)用都觸發(fā)另外兩個遞歸調(diào)用,而這兩個調(diào)用的任何一個還將觸發(fā)兩個遞歸調(diào)用,再接下去的調(diào)用也是如此。這樣,冗余計(jì)算的數(shù)量增長得非常快。例如,在遞歸計(jì)算digui(10)時,digui(3)的值被計(jì)算了21次。但是,在遞歸計(jì)算digui(30)時,digui(3)的值被計(jì)算了317811次。當(dāng)然,這317811次計(jì)算所產(chǎn)生的結(jié)果是完全一樣的,除了其中之一外,其余的純屬浪費(fèi)。這個額外的開銷是相當(dāng)恐怖的!
總結(jié):
在編程時,具體問題要具
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年脲醛塑料項(xiàng)目建議書
- 教學(xué)難點(diǎn)突破策略計(jì)劃
- 2024年急救室設(shè)備器具項(xiàng)目合作計(jì)劃書
- 2024年軌道結(jié)構(gòu)減振產(chǎn)品項(xiàng)目建議書
- 2024年分散型控制系統(tǒng)(DCS)項(xiàng)目合作計(jì)劃書
- 水泥運(yùn)輸委托合同三篇
- 水質(zhì)監(jiān)測與評估工作方案計(jì)劃
- 加強(qiáng)班級紀(jì)律意識計(jì)劃
- 保險代理委托合同三篇
- 2024年Υ射線無損探測儀項(xiàng)目合作計(jì)劃書
- 創(chuàng)意美術(shù)課-恐龍化石-課件
- 肛腸科臨床診療指南
- 智能網(wǎng)聯(lián)汽車技術(shù)(國賽)復(fù)習(xí)備考試題庫(含答案)
- 繪本《爺爺一定有辦法》小老鼠名師優(yōu)質(zhì)課獲獎市賽課一等獎?wù)n件
- 1《興趣的作用》(教學(xué)設(shè)計(jì))全國通用三年級下冊綜合實(shí)踐活動
- 建筑工程設(shè)計(jì)收費(fèi)標(biāo)準(zhǔn)
- 車位使用權(quán)贈予合同范本
- 語文-2023年全國高考新課標(biāo)I卷試題評講課件
- 2023學(xué)年完整公開課版商品外包裝
- 汽車維修檢測實(shí)訓(xùn)室安全操作規(guī)程
- Unit1+workbook-The+Chinese+Spring+Festival課件【核心素養(yǎng)提升+備課精講精研】高中英語人教版2019必修第三冊
評論
0/150
提交評論