c語言遞歸函數(shù)的報(bào)告心得 c語言遞歸的優(yōu)缺點(diǎn)

c語言程序設(shè)計(jì)心得

C語言程序設(shè)計(jì)課程是高等院校計(jì)算機(jī)專業(yè)基礎(chǔ)課程之一,其教學(xué)效果直接影響學(xué)生在計(jì)算機(jī)方面的應(yīng)用。C語言是一門面向過程的、抽象化的通用程序設(shè)計(jì)語言,廣泛應(yīng)用于底層開發(fā)。C語言能以簡易的方式編譯、處理低級存儲器。那么要如何寫關(guān)于c語言程序設(shè)計(jì)心得呢?本文是c語言程序設(shè)計(jì)的心得,僅供參考。

創(chuàng)新互聯(lián)專注于開封網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供開封營銷型網(wǎng)站建設(shè),開封網(wǎng)站制作、開封網(wǎng)頁設(shè)計(jì)、開封網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造開封網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供開封網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

c語言程序設(shè)計(jì)心得一

在這為期半個(gè)月的時(shí)間內(nèi),通過我們小組各成員之間的相互討論和合作,我們完成了學(xué)生信息管理系統(tǒng)的程序設(shè)計(jì),更值得高興的是我們的程序得到了大家的喜愛,在每次的簡報(bào)中都得到了較好的成績。

雖然在上個(gè)學(xué)期中,我們已經(jīng)學(xué)習(xí)了《C 語言程序設(shè)計(jì)》這門課,但是我所學(xué)的知識最多也就是在做作業(yè)的時(shí)候才會用到,平時(shí)沒有什么練習(xí)的機(jī)會,這次的課程設(shè)計(jì)是我第一次通過自己構(gòu)思,和同學(xué)討論并且不斷查閱資料來設(shè)計(jì)一項(xiàng)程序。這次設(shè)計(jì),不僅鞏固了我以前所學(xué)的知識,還讓我對c語言有了更深一步的了解,掌握了更多的技巧和技能。

C語言是計(jì)算機(jī)程序設(shè)計(jì)的重要理論基礎(chǔ),在我們以后的學(xué)習(xí)和工作中都有著十分重要的地位。要學(xué)好這種語言,僅僅學(xué)習(xí)課本上的知識是不夠的,還要經(jīng)常自己動(dòng)手,有較強(qiáng)的實(shí)踐能力。只有多動(dòng)手,經(jīng)常編寫程序,才能發(fā)現(xiàn)我們學(xué)習(xí)上的漏洞和自己的不足,并在實(shí)踐中解決這些問題,不斷提高自己轉(zhuǎn)化知識的能力。

在我們小組有解決不了的問題時(shí),我們會主動(dòng)查閱相關(guān)的資料,或向其他同學(xué)詢問,這不僅豐富了我們的知識,還增進(jìn)了我們同學(xué)之間的友誼。為了增大信息的安全性,需要用文件來存儲信息,由于我們在上課時(shí)不注重對文件的運(yùn)用,所以在這方面有較大的困難。我先將書本認(rèn)認(rèn)真真地看了一遍,又做了一下課后習(xí)題來驗(yàn)證和增進(jìn)自己的理解,終于,經(jīng)過我們的不懈努力,我們小組的程序有了突破,成功地實(shí)現(xiàn)了用文件來保存并查看學(xué)生的信息。

這次設(shè)計(jì)中,我的收獲還有就是學(xué)會了用流程圖來表達(dá)自己的想法,并根據(jù)流程圖來逐步實(shí)現(xiàn)程序的功能。開始的時(shí)候,我畫流程圖很是困難,需要一個(gè)多小時(shí)才能清楚的根據(jù)自己的想法畫出圖來,后來畫多了,就更加了解它的功能,十分得心應(yīng)手,能夠比較快而準(zhǔn)確的畫出來。

在這次課程設(shè)計(jì)中,我們首先對系統(tǒng)的整體功能進(jìn)行了構(gòu)思,然后用結(jié)構(gòu)化分析 方法 進(jìn)行分析,將整個(gè)系統(tǒng)清楚的劃分為幾個(gè)模塊,再根據(jù)每個(gè)模塊的功能編寫代碼。而且盡可能的將模塊細(xì)分,最后在進(jìn)行函數(shù)的調(diào)用。我們在函數(shù)的編寫過程中,我們不僅用到了for循環(huán)、while循環(huán)和switch語句,還用到了函數(shù)之間的調(diào)用(包括遞歸調(diào)用)。由于我們是分工編寫代碼,最后需要將每個(gè)人的代碼放到一起進(jìn)行調(diào)試。因?yàn)槲覀兠總€(gè)人寫的函數(shù)的思想不都一樣,所以在調(diào)試的過程中也遇到了困難,但經(jīng)過我們耐心的修改,終于功夫不負(fù)有心人,我們成功了!

在參考書上,我們不僅參考了曾經(jīng)學(xué)過的高敬陽主編的《c語言程序設(shè)計(jì)》,還找到了由譚浩強(qiáng)主編的第三版《c語言》進(jìn)行參考。

當(dāng)然,我們的程序還有一些不完善的地方,比如說,當(dāng)輸入的數(shù)據(jù)不符合我們定義的數(shù)據(jù)的格式的時(shí)候,程序會出現(xiàn)一些錯(cuò)誤,有時(shí)會出現(xiàn)主菜單的死循環(huán);在一次程序運(yùn)行中,只能行使一種權(quán)限,要想再行使另一種權(quán)限,就只能退出程序,然后再運(yùn)行程序。

三周的小學(xué)期即將結(jié)束,時(shí)間雖短,但是我收獲了很多。最后,謝謝老師和同學(xué)們的指導(dǎo),更要感謝我們小組成員之間的合作與交流。

c語言程序設(shè)計(jì)心得二

通過本次教師發(fā)展在線的C語程培訓(xùn)中,我受益匪淺,幾位教授的精彩演講,讓我找到了自己的不足和日后教學(xué)中的改革方向和內(nèi)容。同時(shí),也讓我感覺到了,有今天各位教授的良好教學(xué)效果,這其中包含了他們的艱辛、背后的大量付出和無私奉獻(xiàn)。

我是一直從事C類語言的教學(xué)工作,對C語言的教學(xué)已有5年教齡,在這幾年的教學(xué)過程中,我們也一直在尋找好的 教學(xué)方法 和新的教學(xué)理念。通過本次學(xué)習(xí),我 總結(jié) 要教好《C語言程序設(shè)計(jì)》這門課,最基本要把握好以下幾個(gè)方面:

(一)要重視實(shí)踐環(huán)節(jié),上機(jī)調(diào)試成績非常重要。

學(xué)習(xí)一門語言,就是要按照它的語法來編程。要編程,當(dāng)然就要上機(jī)操作來驗(yàn)證你程序的正確性。所以上機(jī)非常重要,通過執(zhí)行你所寫的程序,完成你所寫程序的目標(biāo),最終達(dá)到你的目的。而且通過執(zhí)行程序,你會發(fā)現(xiàn)程序中的錯(cuò)誤,從而使你了解你所學(xué)知識中的不足,同時(shí),要學(xué)會根據(jù)編譯時(shí)提示的錯(cuò)誤來改正程序中發(fā)生的錯(cuò)誤,以便下次不會再犯同樣的錯(cuò)誤。

(二)基本語法學(xué)習(xí)雖然枯草乏味,但是它相當(dāng)于高樓大廈的一磚一瓦,一定要下硬功夫讓學(xué)生掌握熟練。

C語言的語法部分。這部分內(nèi)容是學(xué)好C語言的基礎(chǔ),只有學(xué)好了這些語法,才會寫程序,看程序。所以對一個(gè)初學(xué)者來說,這部分內(nèi)容是非常重要的,所以要扎實(shí)地熟悉每一個(gè)語法,并能根據(jù)這些語法來編程。

(三)學(xué)習(xí)要抓住重點(diǎn),難點(diǎn)部分要多講、多學(xué)、多練。

通過這次學(xué)習(xí)使得我對C語言的重點(diǎn),難點(diǎn),以及易出錯(cuò)的地方把握的更精準(zhǔn)了。當(dāng)然,這只是針對我個(gè)人而言。在C語言學(xué)習(xí)過程,重點(diǎn)就是數(shù)組,指針,以及結(jié)構(gòu)體了。難點(diǎn)也是它們了,不過數(shù)組和結(jié)構(gòu)體還是挺簡單,所以在此主要就指針方面談?wù)勛约旱目捶ā?/p>

下面談?wù)勍ㄟ^這次學(xué)習(xí),結(jié)合我們學(xué)校的教學(xué)情況,打算對該課程的教學(xué)進(jìn)行如下幾個(gè)方面的改革:

(一)理論教學(xué)內(nèi)容的組織

C語言的重點(diǎn)知識包括:結(jié)構(gòu)化程序設(shè)計(jì)方法、流程圖的組織、三種程序設(shè)計(jì)結(jié)構(gòu)、三種基本數(shù)據(jù)類型和三種自定義數(shù)據(jù)類型;難點(diǎn)包括:結(jié)構(gòu)程序設(shè)計(jì)方法、算法的分析、流程圖的組織與設(shè)計(jì)、函數(shù)、指針等。

根據(jù)知識內(nèi)容和每年的新學(xué)時(shí)安排,我們將理論教學(xué)內(nèi)容分為授課內(nèi)容和自學(xué)內(nèi)容兩 大模塊。

(1)授課內(nèi)容

C語言的授課內(nèi)容分為兩階段:①基礎(chǔ)準(zhǔn)備階段 這部分內(nèi)容確保學(xué)生“實(shí)用、夠用”,主要包括三種基本數(shù)據(jù)類型(只要求掌握常用的int,float,char);三種常用運(yùn)算符及其表達(dá)式(賦值、算術(shù)、邏輯(包括關(guān)系));三種程序設(shè)計(jì)結(jié)構(gòu)(順序、選擇、循環(huán))。②實(shí)訓(xùn)項(xiàng)目驅(qū)動(dòng)階段 這部分內(nèi)容主要是“實(shí)訓(xùn)實(shí)戰(zhàn)”,主要包括數(shù)組、函數(shù)、指針和結(jié)構(gòu)體。通過第一階段的學(xué)習(xí),學(xué)生已經(jīng)具備了一些程序設(shè)計(jì)的基礎(chǔ)知識,在這一階段將通過一個(gè)實(shí)訓(xùn)項(xiàng)目的完成來熟悉主要內(nèi)容,同時(shí)鞏固第一階段的成果。

(2)自學(xué)內(nèi)容

課本中的內(nèi)容上課沒重點(diǎn)介紹或者說就是沒提到的,劃為自學(xué)內(nèi)容。但這些內(nèi)容,我們并不是在課堂要求學(xué)生回去自學(xué):要求過高,規(guī)矩過多,這樣效果不佳。而是讓學(xué)生在實(shí)驗(yàn)中發(fā)現(xiàn)問題后,帶著問題去學(xué)習(xí),去找答案。

例:整型 我們只介紹int基本類型,當(dāng)學(xué)生想計(jì)算n!時(shí),學(xué)生測試5!=120時(shí),他可能會去測試20!、50!,這時(shí),存放階乘的變量Factorial再定義為int,結(jié)果就是0了,這時(shí)問題就來了,他就會去尋找正確的處理方法(long int)。

(二)實(shí)驗(yàn)教學(xué)的安排與設(shè)計(jì)

教學(xué)改革方案確定后,我們對本課程實(shí)驗(yàn)教學(xué)上從多方面進(jìn)行了教學(xué)更新。我們考慮到學(xué)生處于了解計(jì)算機(jī)語言及編程的初級階段,有許多最基礎(chǔ)的內(nèi)容有待掌握,所以本課程的實(shí)驗(yàn)教學(xué)不太適合完全以項(xiàng)目開發(fā)的形式進(jìn)行,注重的是加強(qiáng)模塊化實(shí)訓(xùn)。

(1)上好第一節(jié)實(shí)驗(yàn)課

我們常說“上好第一節(jié)課”,那么第一節(jié)實(shí)驗(yàn)節(jié)的重要性也不言而喻。這節(jié)課對培養(yǎng)學(xué)生的學(xué)習(xí)興趣、增強(qiáng)學(xué)生的學(xué)習(xí)信心、鍛煉學(xué)生的自主學(xué)習(xí)等多方面影響很大。

第一次實(shí)驗(yàn)項(xiàng)目是mdash;熟悉Turbo C的運(yùn)行環(huán)境,主要是掌握一些在TC中的一些鍵盤操作方式。一般是教師給學(xué)生提供程序代碼(三個(gè)),但我們在學(xué)生不知情的情況下,給學(xué)生兩個(gè)有語法錯(cuò)誤的和一個(gè)正確的程序。這樣,當(dāng)學(xué)生運(yùn)行正確的程序時(shí),知道計(jì)算機(jī)可以幫我們處理問題,原來程序就是這樣寫的;當(dāng)學(xué)生運(yùn)行錯(cuò)誤的程序,首先他會詫異(老師給的程序原來是錯(cuò)的),于是要求他們自己修改,尤其是有時(shí)一個(gè)致命錯(cuò)誤導(dǎo)致的10多個(gè)errors,被學(xué)生修改后,沒有了errors或所剩無幾,這時(shí)學(xué)生表現(xiàn)的很興奮、很有成就感,從而加強(qiáng)了本課程的學(xué)習(xí)興趣和信心。

(2)分兩階段進(jìn)行

實(shí)驗(yàn)內(nèi)容與理論教學(xué)內(nèi)容相互應(yīng),在基礎(chǔ)準(zhǔn)備階段,這方面教學(xué)方法上主要是加強(qiáng)操練。通過各種大小程序、多重訓(xùn)練和一個(gè)問題的多種解法來加強(qiáng)語法知識點(diǎn)的掌握和訓(xùn)練,開闊學(xué)生編程的思路,掌握編程基礎(chǔ)。同時(shí),在這過程中我們嚴(yán)格把關(guān),讓學(xué)生課后認(rèn)真準(zhǔn)備,每次進(jìn)實(shí)驗(yàn)室時(shí),應(yīng)有寫好的完整代碼,上機(jī)調(diào)試,發(fā)現(xiàn)問題同時(shí)解決問題,要求認(rèn)真完成實(shí)驗(yàn)內(nèi)容,并在課后書寫實(shí)驗(yàn) 報(bào)告 。鼓勵(lì)學(xué)生多寫程序,要加強(qiáng)實(shí)踐環(huán)節(jié),首先要從量上有個(gè)劃分。在實(shí)訓(xùn)項(xiàng)目驅(qū)動(dòng)階段。本階段實(shí)訓(xùn)項(xiàng)目的設(shè)計(jì)非常重要,原則是既要使學(xué)生有切入點(diǎn)能夠動(dòng)手又要使各章的內(nèi)容之間有聯(lián)系點(diǎn)。

(三)案例教學(xué)法

C語言的教學(xué),教師一般受傳統(tǒng)應(yīng)試 教育 的影響,狠抓理論考試,忽略了程序設(shè)計(jì)能力的培養(yǎng),把授課重點(diǎn)放在程序設(shè)計(jì)語言的基本語法的講授和掌握上,所選的編程實(shí)例大多用于語法規(guī)則的驗(yàn)證和說明,僅從程序設(shè)計(jì)語言的使用這個(gè)單一的角度進(jìn)行教學(xué),而使得大多數(shù)學(xué)生在學(xué)完本課程后,“吃不透、用不活”,表現(xiàn)為學(xué)生在程序調(diào)試時(shí),對程序中出現(xiàn)的邏輯錯(cuò)誤經(jīng)常不知所措,在開發(fā)較大的應(yīng)用程序時(shí),不知道如何入手。

采用案例教學(xué)法,以程序設(shè)計(jì)為主線,以編程應(yīng)用為驅(qū)動(dòng),通過案例和問題引出教材內(nèi)容,重點(diǎn)講解程序設(shè)計(jì)的思想和方法,穿插講解相關(guān)的語言知識。使教學(xué)效果既有深度又有廣度,學(xué)生實(shí)際動(dòng)手能力大為增強(qiáng)。

以上是我個(gè)人結(jié)合我院C語言程序設(shè)計(jì)的教學(xué)情況,自己總結(jié)了幾點(diǎn)看法和一些改革 措施 ,拿出來和大家一起分享,請大家多提寶貴意見。通過這次學(xué)習(xí),我將會靈活運(yùn)用幾位教授的教學(xué) 經(jīng)驗(yàn) ,根據(jù)我院的教學(xué)對象,調(diào)整一些上課方法和措施,望能更好的提高教學(xué)質(zhì)量。

c語言程序設(shè)計(jì)心得三

通過此次C語言程序設(shè)計(jì)實(shí)踐,本人實(shí)在是獲益不淺!C語言是上個(gè)學(xué)期開的課程,所以這個(gè)學(xué)期并沒怎么看過,當(dāng)要開始設(shè)計(jì)的時(shí)候,還真不知從哪下手!結(jié)果,第一次的上機(jī),我傻坐著不知道該做什么,后來就寫了幾個(gè)預(yù)處理命令?;厝ヒ院?我想,這樣不行,這樣下去還得了!我就重新復(fù)習(xí)了一遍我們上個(gè)學(xué)期學(xué)習(xí)的內(nèi)容,發(fā)覺自已有許多都遺忘了!特別是有文件的操作,幾乎是一遍空白!溫習(xí)過后,開始做題!

一開始做題,也是有點(diǎn)模糊,在指導(dǎo)老師的指導(dǎo)下,我們慢慢的進(jìn)入狀態(tài),我們做的是一個(gè)通訊錄,內(nèi)容包括很多。運(yùn)用的函數(shù)也是非常的復(fù)雜,我們一組有七個(gè)人,我分工合作,首先我一起完成了結(jié)構(gòu)題,然后我們一人各負(fù)責(zé)一個(gè)函數(shù)程序的設(shè)計(jì),經(jīng)過幾星期的努力,我們完成了大半個(gè)程序,但是總是有很多錯(cuò)誤出現(xiàn),有好多是些小問題,這都是我們粗心大意造成的,所以設(shè)計(jì)程序一定要仔細(xì),不容一點(diǎn)的馬虎。當(dāng)然也有大問題,關(guān)于文件的操作,是我們最大的問題,不過,我們做好后,經(jīng)過老師的講解和改錯(cuò),我們也懂得設(shè)計(jì)和運(yùn)用了。同時(shí),也讓我知道了,合作的力量,如果是孤軍奮戰(zhàn)的話,我也不能在規(guī)定時(shí)間內(nèi)完成,當(dāng)然,也多虧老師的指導(dǎo)。

這次設(shè)計(jì),讓我重新掌握了C語言,而且還得到了用C語言解決實(shí)際問題的寶貴經(jīng)驗(yàn)!

↓↓↓點(diǎn)擊下一頁還有更多精彩的C語言編程 學(xué)習(xí)心得 ↓↓↓

關(guān)于遞歸函數(shù)(C語言的)

int search(int *array, int length, int target)

{

int count = 0;

if (array[length-1] == target) count =1;

if (length -1 0) count += search(array, length-1, target);

return count;

}

C語言的遞歸好難理解,誰能詳細(xì)解釋下

可以自由轉(zhuǎn)載,但請注明以下內(nèi)容,謝謝合作!

作者:Enoch Wang 引用自:;

所謂遞歸,簡而言之就是應(yīng)用程序自身調(diào)用自身,以實(shí)現(xiàn)層次數(shù)據(jù)結(jié)構(gòu)的查詢和訪問。 遞歸的使用可以使代碼更簡潔清晰,可讀性更好(對于初學(xué)者到不見得),但由于遞歸需要系統(tǒng)堆棧,所以空間消耗要比非遞歸代碼要大很多,而且,如果遞歸深度太大,可能系統(tǒng)資源會不夠用。

往往有這樣的觀點(diǎn):能不用遞歸就不用遞歸,遞歸都可以用迭代來代替。

誠然,在理論上,遞歸和迭代在時(shí)間復(fù)雜度方面是等價(jià)的(在不考慮函數(shù)調(diào)用開銷和函數(shù)調(diào)用產(chǎn)生的堆棧開銷),但實(shí)際上遞歸確實(shí)效率比迭代低,既然這樣,遞歸沒有任何優(yōu)勢,那么是不是就,沒有使用遞歸的必要了,那遞歸的存在有何意義呢?

萬物的存在是需要時(shí)間的檢驗(yàn)的,遞歸沒有被歷史所埋沒,即有存在的理由。從理論上說,所有的遞歸函數(shù)都可以轉(zhuǎn)換為迭代函數(shù),反之亦然,然而代價(jià)通常都是比較高的。但從算法結(jié)構(gòu)來說,遞歸聲明的結(jié)構(gòu)并不總能夠轉(zhuǎn)換為迭代結(jié)構(gòu),原因在于結(jié)構(gòu)的引申本身屬于遞歸的概念,用迭代的方法在設(shè)計(jì)初期根本無法實(shí)現(xiàn),這就像動(dòng)多態(tài)的東西并不總是可以用靜多態(tài)的方法實(shí)現(xiàn)一樣。這也是為什么在結(jié)構(gòu)設(shè)計(jì)時(shí),通常采用遞歸的方式而不是采用迭代的方式的原因,一個(gè)極典型的例子類似于鏈表,使用遞歸定義及其簡單,但對于內(nèi)存定義(數(shù)組方式)其定義及調(diào)用處理說明就變得很晦澀,尤其是在遇到環(huán)鏈、圖、網(wǎng)格等問題時(shí),使用迭代方式從描述到實(shí)現(xiàn)上都變得不現(xiàn)實(shí)。 因而可以從實(shí)際上說,所有的迭代可以轉(zhuǎn)換為遞歸,但遞歸不一定可以轉(zhuǎn)換為迭代。

采用遞歸算法需要的前提條件是,當(dāng)且僅當(dāng)一個(gè)存在預(yù)期的收斂時(shí),才可采用遞歸算法,否則,就不能使用遞歸算法。

遞歸其實(shí)是方便了程序員難為了機(jī)器,遞歸可以通過數(shù)學(xué)公式很方便的轉(zhuǎn)換為程序。其優(yōu)點(diǎn)就是易理解,容易編程。但遞歸是用棧機(jī)制實(shí)現(xiàn)的,每深入一層,都要占去一塊棧數(shù)據(jù)區(qū)域,對嵌套層數(shù)深的一些算法,遞歸會力不從心,空間上會以內(nèi)存崩潰而告終,而且遞歸也帶來了大量的函數(shù)調(diào)用,這也有許多額外的時(shí)間開銷。所以在深度大時(shí),它的時(shí)空性就不好了。

而迭代雖然效率高,運(yùn)行時(shí)間只因循環(huán)次數(shù)增加而增加,沒什么額外開銷,空間上也沒有什么增加,但缺點(diǎn)就是不容易理解,編寫復(fù)雜問題時(shí)困難。

因而,“能不用遞歸就不用遞歸,遞歸都可以用迭代來代替”這樣的理解,Enoch不敢茍同,還是辯證的來看待,不可一棍子打死。

參考資料:

標(biāo)題名稱:c語言遞歸函數(shù)的報(bào)告心得 c語言遞歸的優(yōu)缺點(diǎn)
標(biāo)題URL:http://muchs.cn/article4/ddiepoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作網(wǎng)站排名、定制開發(fā)全網(wǎng)營銷推廣、微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司