《演算法設計與分析》中遞迴的概念是什麼謝謝大家

2021-12-21 07:10:50 字數 3214 閱讀 3948

1樓:匿名使用者

自己呼叫自己,調到底部再,層層返回,不推薦使用,比較耗時間。

2樓:匿名使用者

簡單的講就是自己呼叫自己,你別把他當什麼遞迴,在分析的時候就把它當成呼叫別的函式,這樣好理解些。

這個設計起來很難,而且執行速度低,一般能不用就不用。

希望對你有用!

3樓:

遞迴的基本概念和特點

程式呼叫自身的程式設計技巧稱為遞迴( recursion)。

一個過程或函式在其定義或說明中又直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。遞迴的能力在於用有限的語句來定義物件的無限集合。用遞迴思想寫出的程式往往十分簡潔易懂。

一般來說,遞迴需要有邊界條件、遞迴前進段和遞迴返回段。當邊界條件不滿足時,遞迴前進;當邊界條件滿足時,遞迴返回。

注意:(1) 遞迴就是在過程或函式裡呼叫自身;

(2) 在使用遞增歸策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。

遞迴是什麼意思?

4樓:小小歐平兒

程式呼叫自身的程式設計技巧稱為遞迴( recursion)。

構成遞迴需具備的條件有:

1、子問題須與原始問題為同樣的事,且更為簡單。

2、不能無限制地呼叫本身,須有個出口,化簡為非遞迴狀況處理。

遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。

5樓:百度文庫精選

內容來自使用者:nhz312

如果一個物件部分地由自己組成,或者是按它自已定義的,則稱為是遞迴的。遞迴不僅在數學中會遇到,在日常生活中也可以遇到。請看下面的**:

直接或間接地呼叫自身的演算法稱為遞迴演算法。

用函式自身給出定義的函式稱為遞迴函式。

在計算機演算法設計與分析中,遞迴技術是十分有用的。使用遞迴技術往往使函式的定義的演算法的描述簡潔且易於理解。有些資料結構如二叉樹等,由於其本身固有的遞迴特性,特別適合用遞迴的形式來描述。

另外,還有一些問題,雖然其本身並沒有明顯的遞迴結構,但用遞迴技術來求解使設計出的演算法簡潔易懂且易於分析。

遞迴演算法一般用於解決三類問題:

(1)資料的定義形式是按遞迴定義的。這類遞迴問題往往又可轉化成遞推演算法,遞迴邊界作為遞推的邊界條件。

比如階乘的定義:

(式2-1)

又如裴波那契(fibonacci)數列的定義:

(式2-2)

(2)問題解法按遞迴演算法實現。例如回溯等。

(3)資料的結構形式是按遞迴定義的。如樹的遍歷,圖的搜尋等。

遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。

6樓:山間悠客

遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。一個示例就是計算階乘。

0 的階乘被特別地定義為 1。 更大數的階乘是通過計算 1 * 2 * ...來求得的,每次增加 1,直至達到要計算其階乘的那個數。

下面的段落是用文字定義的計算階乘的一個函式。

「如果這個數小於零,則拒絕接收。如果不是一個整數,則將其向下舍入為相鄰的整數。如果這個數為 0,則其階乘為 1。如果這個數大於 0,則將其與相鄰較小的數的階乘相乘。」

要計算任何大於 0 的數的階乘,至少需要計算一個其他數的階乘。用來實現這個功能的函式就是已經位於其中的函式;該函式在執行當前的這個數之前,必須呼叫它本身來計算相鄰的較小數的階乘。這就是一個遞迴示例。

遞迴和迭代(迴圈)是密切相關的 — 能用遞迴處理的演算法也都可以採用迭代,反之亦然。確定的演算法通常可以用幾種方法實現,您只需選擇最自然貼切的方法,或者您覺得用起來最輕鬆的一種即可。

顯然,這樣有可能會出現問題。可以很容易地建立一個遞迴函式,但該函式不能得到一個確定的結果,並且不能達到一個終點。這樣的遞迴將導致計算機執行一個「無限」迴圈。

下面就是一個示例:在計算階乘的文字描述中遺漏了第一條規則(對負數的處理) ,並試圖計算任何負數的階乘。這將導致失敗,因為按順序計算 -24 的階乘時,首先不得不計算 -25 的階乘;然而這樣又不得不計算 -26 的階乘;如此繼續。

很明顯,這樣永遠也不會到達一個終止點。

因此在設計遞迴函式時應特別仔細。如果懷疑其中存在著無限遞迴的可能,則可以讓該函式記錄它呼叫自身的次數。如果該函式呼叫自身的次數太多,即使您已決定了它應呼叫多少次,就自動退出。

下面仍然是階乘函式,這次是用 jscript **編寫的。

// 計算階乘的函式。如果傳遞了

// 無效的數值(例如小於零),

// 將返回 -1,表明發生了錯誤。若數值有效,

// 把數值轉換為最相近的整數,並

// 返回階乘。

function factorial(anumber)

if (anumber == 0)

else return (anumber * factorial(anumber - 1)); // 否則,遞迴直至完成。}

7樓:安徽新華電腦專修學院

遞迴演算法就是一個函式通過不斷對自己的呼叫而求得最終結果的一種思維巧妙但是開銷很大的演算法。

8樓:匿名使用者

就是自己呼叫自己. 比如我們定義階乘: n的階乘等於n乘以(n-1)的階乘. 這裡在 "n階乘" 的定義裡用到了 "(n-1)階乘", 用階乘來定義階乘, 就是遞迴了

9樓:匿名使用者

遞迴 就是 函式掉用自己或間接的呼叫自己

《演算法分析與設計》課程講什麼內容?

10樓:中國人民大學網路教育

《演算法分析與設計》課程是理論性與應用性並重的專業課程。本課程以演算法設計策略為知識單元,系統地介紹計算機演算法的設計方法和分析技巧。課程教學主要內容包括:

第一章,演算法概述;第二章,遞迴與分治策略;第三章,動態規劃;第四章,貪心演算法;第五章,回溯法;第六章,分支限界法。通過介紹經典以及實用演算法讓同學掌握演算法設計的基本方法。結合例項分析,讓同學深入理解演算法設計的技巧,以及分析演算法的能力。

演算法分析與設計這門課程第四章貪心演算法的知識點有哪些

演算法分析與設計這門課第四章貪心演算法的知識點包含章節導引,第一節活動安排問題,第二節貪心演算法基本要素,第三節最優裝載,第四節單源最短路徑,第五節多機排程問題,課後練習,計算機程式語言有哪些?答 成千上萬。最主流 c 最基礎 basic 工程應用 fortran 教學語言 pascal 計算機程式...

在傳統的結構化系統分析與設計中都使用些什麼圖?它們和UML中的各種圖有什麼不同

1.在結構化分析與設計中常用的圖有 資料流圖 dfd 狀態圖和e r圖.2.uml的圖均用於分析與設計,但它們是 物件導向的分析與設計 uml的各種圖應該在系統分析,設計的哪個階段應用 uml各種圖 來在系統分析設計中使用,源並沒有非常精bai準的要求。一般du都是根據專案情況zhi和分析設計要求d...

增函式與減函式的概念是 增函式減增函式是什麼函式

函式就是隨x增大y增大,如y x。減函式就是隨x增大y減小,如y 1 x。一次函式的表示式是 y kx b,x可取任何實數,只要k 0時,一次函式是減函式,k 0時,一次函式是增函式。程式設計。函式過程中的這些語句用於完成某些有意義的工作 通常是處理文字,控制輸入或計算數值。通過在程式 中引入函式名...