日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归入门

發(fā)布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

分享一下我老師大神的人工智能教程!零基礎(chǔ),通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉(zhuǎn)載本篇文章。分享知識,造福人民,實現(xiàn)我們中華民族偉大復(fù)興!

寫在前面:

對于強大的遞歸。要想做到靈活運用,是需要花時間進(jìn)行練習(xí)并總結(jié)。往往遞歸學(xué)習(xí)的入門也是難度也比較大,常常會處于看得明,卻寫不出的"尷尬"情況。

本人也是一名編程菜鳥,也常處于尷尬中。正因遞歸的學(xué)習(xí)需要一個過程,所以萌生一個想法,對于每一次的遞歸學(xué)習(xí)都寫篇博文總結(jié),與大家分享,共同進(jìn)步!

在此推薦一本學(xué)習(xí)遞歸較好的的入門書:《程序設(shè)計抽象思想:C語言描述》?。本文章也引用了書中的對遞歸要點的理解和描述。

如果對遞歸學(xué)習(xí)此系列的文章有任何的建議或批評,歡迎指出!

*文章練習(xí)會不定期進(jìn)行更新


遞歸的簡單介紹和要點梳理

遞歸維基百科

遞歸百度百科

遞歸互動百科

遞歸的定義:

將一個大的問題分解成比較小的、有著相同形式的問題。

遞歸是一種強有力的思想。在計算機科學(xué)的學(xué)習(xí)中,一個重要的必須學(xué)習(xí)的概念是遞歸。遞歸是一種編程策略,它把一個大的問題分解成具有相同形式的簡單問題。


遞歸示例:(可以按照以下順序逐步練習(xí)遞歸)

  • 階乘函數(shù)
  • 斐波那契函數(shù)
  • 回文字符串
  • 字符串翻轉(zhuǎn)
  • 折半查找
  • 判斷一個數(shù)是偶數(shù)還是奇數(shù)
  • 漢諾塔
  • poj 放蘋果


使用遞歸的必需條件

  • 可以通過遞歸調(diào)用來縮小問題規(guī)模,且新問題與原問題有著相同的形式
  • 存在一種簡單情境,可以使遞歸在簡單情境下退出
  • 一般對遞歸思想的介紹,都是說將大問題分解為一個個小問題。本人覺得,帶著 “如何將問題規(guī)模縮少”的思想 比 “將大問題分解為一個個小問題” 的思想要更好地編寫遞歸程序。


    遞歸跳躍的信任

    當(dāng)嘗試?yán)斫膺f歸程序時,必須能夠拋開底層的細(xì)節(jié),將注意力集中在單個計算層次上。在這個層次上,只要一個遞歸調(diào)用的參數(shù)在某些方面能比前一個參數(shù)更簡單,那么就可以認(rèn)為任何遞歸調(diào)用都能夠自動地得到正確的答案。這種心理策略——假設(shè)任何更簡單的遞歸都能正確地實現(xiàn)——叫做對遞歸跳躍的信任。在實際應(yīng)用中,學(xué)習(xí)應(yīng)用這個策略是使用遞歸的基礎(chǔ)。


    以遞歸的方式思考

    保持整體觀:遞歸思維要求整體考慮。在遞歸領(lǐng)域中,只考慮局部是理解的敵人,將會妨礙對遞歸的理解。為了保持這種整體觀,必須習(xí)慣于采用對遞歸跳躍的信任。無論是在寫遞歸程序或是理解遞歸程序,都必須達(dá)到忽視單個遞歸調(diào)用細(xì)節(jié)的地步。只要選擇了正確的分解,確認(rèn)了相應(yīng)的簡單情景,并且正確地實現(xiàn)了策略,那么這些遞歸調(diào)用能夠自己運行,不必過多考慮。


    避免常見的錯誤

  • 檢驗遞歸實現(xiàn)是不是以檢查簡單情景開始。在幾乎所有情況中,遞歸函數(shù)都開始于關(guān)鍵字 if 。如果你的函數(shù)不是這樣,那么應(yīng)該仔細(xì)檢查程序并確信知道自己在做什么
  • 正確地解決了簡單情景了嗎?在遞歸程序中很多bug都是起源于簡單情景的不正確解決。如果簡單情景是錯誤的,那么對更復(fù)雜問題的遞歸解決將會繼承相同的錯誤
  • 遞歸分解使問題更加簡單了嗎?遞歸的作用在于,隨著問題解決的進(jìn)行,它將變得越來越就簡單。即每一次遞歸調(diào)用中,參數(shù)值將會越來越小
  • 簡化的過程是不是逐漸地達(dá)到了簡單情景,或者是不是遺漏了一些可能性?常見的一個錯誤就是沒有將全部情況的簡單情景測試都包括其中,這些情況可能作為遞歸分解的結(jié)果而產(chǎn)生出來。簡單說:你需要正確地將所有的簡單情景分析出來
  • 函數(shù)中的遞歸調(diào)用是不是表示了在形式上和初始問題真的完全相同的子問題?當(dāng)使用遞歸分解問題時,關(guān)鍵在于子問題形式的同一性。如果遞歸調(diào)用改變了問題的本性,或者違反了一個初始化的假設(shè),那么全部過程就被破環(huán)
  • 當(dāng)使用對遞歸跳躍的信任時,遞歸子問題的解決方案是否對初始問題提供了一個完整的解決方案?將一個問題分解為遞歸子問題僅僅是遞歸過程的一部分,一旦子問題得到了解決,那么也必須能夠?qū)⑺麄冎匦陆M裝從而得到全部的答案

  • 在示例練習(xí)中會盡量以上述幾點為基礎(chǔ)去思考問題的解法






    ???????????

    給我老師的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    總結(jié)

    以上是生活随笔為你收集整理的递归入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。