動態(tài)規(guī)劃核心思想 C語言中的遞歸程序可以用非遞歸算法實(shí)現(xiàn)嗎?
C語言中的遞歸程序可以用非遞歸算法實(shí)現(xiàn)嗎?是的,所有遞歸都可以用循環(huán)和堆棧等價(jià)重寫。如何理解遞歸,回溯,動態(tài)規(guī)劃等算法?遞歸比較簡單,是遞歸的逆算法。例如,給定a(10)和a(n)=f(a(n1)),
C語言中的遞歸程序可以用非遞歸算法實(shí)現(xiàn)嗎?
是的,所有遞歸都可以用循環(huán)和堆棧等價(jià)重寫。
如何理解遞歸,回溯,動態(tài)規(guī)劃等算法?
遞歸比較簡單,是遞歸的逆算法。例如,給定a(10)和a(n)=f(a(n1)),讓您找到a(1)?;厮菔且环N必須用于深度優(yōu)先搜索的方法。建議大家看一看“八皇后問題”,看完后要理解。動態(tài)規(guī)劃是一種以空間換時(shí)間的算法,即占用大量內(nèi)存,但具有較高的時(shí)間效率。建議你看看“攔截導(dǎo)彈”問題和“0/1背包問題”。先看動態(tài)規(guī)劃問題,再了解概念比較好
算法需要長期的積累和熟悉。
對于計(jì)算機(jī)軟件開發(fā)專業(yè)人士來說,算法極其重要,熟悉和掌握常用的算法,對理解問題、解決問題非常重要。
那么,如何更有效地掌握常用算法呢?現(xiàn)在讓我談?wù)勎易约旱目捶ā?/p>
首先,找到有趣的點(diǎn)并查看更多。
在學(xué)習(xí)算法之初,學(xué)生總是感到枯燥乏味,沒有任何實(shí)際應(yīng)用指導(dǎo),對持續(xù)深入的學(xué)習(xí)不感興趣。漸漸地,他們忘記了所學(xué)的所有算法,更不用說掌握了。
解決方法是:堅(jiān)持看,多看,看這個(gè)算法在實(shí)際應(yīng)用中的例子。所以你不會覺得算法很無聊。
第二,練習(xí)和理解。
沒有實(shí)踐的支持,理論總是模糊不清的。每次學(xué)習(xí)算法時(shí),都必須用自己的編程語言來實(shí)現(xiàn)。當(dāng)你能用編程語言實(shí)現(xiàn)一些算法時(shí),你就會有成就感!同時(shí),你也很自然地理解了算法的思想,即掌握了算法。
第三,多學(xué)習(xí)別人的算法講解,仔細(xì)分析別人的想法。
總之,算法是一門很重要的課程,也是一門很有意思的課程,祝你在學(xué)習(xí)的路上,有興趣找樂子
!(歡迎跟我來和我們討論)