1樓:小小歐平兒
程式呼叫自身的程式設計技巧稱為遞迴( recursion)。
構成遞迴需具備的條件有:
1、子問題須與原始問題為同樣的事,且更為簡單。
2、不能無限制地呼叫本身,須有個出口,化簡為非遞迴狀況處理。
遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的**量。
2樓:百度文庫精選
內容來自使用者:nhz312
如果一個物件部分地由自己組成,或者是按它自已定義的,則稱為是遞迴的。遞迴不僅在數學中會遇到,在日常生活中也可以遇到。請看下面的**:
直接或間接地呼叫自身的演算法稱為遞迴演算法。
用函式自身給出定義的函式稱為遞迴函式。
在計算機演算法設計與分析中,遞迴技術是十分有用的。使用遞迴技術往往使函式的定義的演算法的描述簡潔且易於理解。有些資料結構如二叉樹等,由於其本身固有的遞迴特性,特別適合用遞迴的形式來描述。
另外,還有一些問題,雖然其本身並沒有明顯的遞迴結構,但用遞迴技術來求解使設計出的演算法簡潔易懂且易於分析。
遞迴演算法一般用於解決三類問題:
(1)資料的定義形式是按遞迴定義的。這類遞迴問題往往又可轉化成遞推演算法,遞迴邊界作為遞推的邊界條件。
比如階乘的定義:
(式2-1)
又如裴波那契(fibonacci)數列的定義:
(式2-2)
(2)問題解法按遞迴演算法實現。例如回溯等。
(3)資料的結構形式是按遞迴定義的。如樹的遍歷,圖的搜尋等。
遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效率較低。在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。
3樓:山間悠客
遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。一個示例就是計算階乘。
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)); // 否則,遞迴直至完成。}
4樓:安徽新華電腦專修學院
遞迴演算法就是一個函式通過不斷對自己的呼叫而求得最終結果的一種思維巧妙但是開銷很大的演算法。
5樓:匿名使用者
就是自己呼叫自己. 比如我們定義階乘: n的階乘等於n乘以(n-1)的階乘. 這裡在 "n階乘" 的定義裡用到了 "(n-1)階乘", 用階乘來定義階乘, 就是遞迴了
6樓:匿名使用者
遞迴 就是 函式掉用自己或間接的呼叫自己
什麼是遞迴函式?怎樣實現遞迴,遞迴函式F n 的遞迴演算法是什麼
假面 遞迴就是一個函式在它的函式體內呼叫它自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴函式必須有結束條件。當函式在一直遞推,直到遇到牆後返回,這個牆就是結束條件。所以遞迴要有兩個要素,結束條件與遞推關係。遞迴有兩個基本要素 1 邊界條件 確定遞迴到何時終止,也稱為遞迴出口。2 ...
是什麼意思,意思是什麼意思!!??
3!代表的是3的階乘。3!3 2 1 6任何大於等於1 的自然數n 階乘表示方法 0的階乘0!1。階乘是基斯頓 卡曼 christian kramp,1760 1826 於 1808 年發明的運算子號,是數學術語。一個正整數的階乘 factorial 是所有小於及等於該數的正整數的積,並且0的階乘為...
,是什麼意思,意思是什麼意思啊
這就英文裡逗號啊。我很好奇你是怎麼把它打出來的。意思是什麼意思啊 意思是自己要表達的一個東西,思想,道理。如果問我 我會這樣子說 它是一種你原本知道的認知思維。然而你一時間迷糊了 別人告訴你了才瞬間明白。這個東西你原本就知道,不說你就不知道。意思的意義有很多,如思想 心思,意義,道理。意圖,用意 意...