什麼是遞迴呼叫,什麼是遞迴函式? 怎樣實現遞迴?

時間 2021-12-22 19:37:22

1樓:小小歐平兒

遞迴呼叫是一種特殊的巢狀呼叫,是某個函式呼叫自己或者是呼叫其他函式後再次呼叫自己的,只要函式之間互相呼叫能產生迴圈的則一定是遞迴呼叫,遞迴呼叫一種解決方案,一種是邏輯思想,將一個大工作分為逐漸減小的小工作。

遞迴函式特點:

1、函式要直接或間接呼叫自身。

2、要有遞迴終止條件檢查,即遞迴終止的條件被滿足後,則不再呼叫自身函式。

3、如果不滿足遞迴終止的條件,則呼叫涉及遞迴呼叫的表示式。在呼叫函式自身時,有關終止條件的引數要發生變化,而且需向遞迴終止的方向變化。

2樓:匿名使用者

簡單的來說就是自己調自己。

比如斐波那列數的問題:1,1,2,3,5 ……即一個數等於它前兩個數之和,就可以這樣做

int fun(n)

在fun內,呼叫fun自身。遞迴必須有終點,不能無限制的調下去,否則會棧溢位。

3樓:歪生

樓上說得好,就是自己呼叫自己,提高子函式的**利用率!!

4樓:匿名使用者

在函式的內部呼叫函式本身

5樓:匿名使用者

遞迴就是函式呼叫函式本身,例如:

function recursion(i)}

什麼是遞迴函式? 怎樣實現遞迴?

6樓:假面

遞迴就是一個函式在它的函式體內呼叫它自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴函式必須有結束條件。

當函式在一直遞推,直到遇到牆後返回,這個牆就是結束條件。

所以遞迴要有兩個要素,結束條件與遞推關係。

遞迴有兩個基本要素:

(1)邊界條件:確定遞迴到何時終止,也稱為遞迴出口。

(2)遞迴模式:大問題是如何分解為小問題的,也稱為遞迴體。遞迴函式只有具備了這兩個要素,才能在有限次計算後得出結果

在遞迴函式中,呼叫函式和被呼叫函式是同一個函式,需要注意的是遞迴函式的呼叫層次,如果把呼叫遞迴函式的主函式稱為第0層,進入函式後,首次遞迴呼叫自身稱為第1層呼叫;從第i層遞迴呼叫自身稱為第i+1層。反之,退出第i+1層呼叫應該返回第i層。

一個遞迴函式的呼叫過程類似於多個函式的巢狀的呼叫,只不過呼叫函式和被呼叫函式是同一個函式。為了保證遞迴函式的正確執行,系統需設立一個工作棧。具體地說,遞迴呼叫的內部執行過程如下:

(1)運動開始時,首先為遞迴呼叫建立一個工作棧,其結構包括值參、區域性變數和返回地址;

(2)每次執行遞迴呼叫之前,把遞迴函式的值參和區域性變數的當前值以及呼叫後的返回地址壓棧;

(3)每次遞迴呼叫結束後,將棧頂元

7樓:麥香甜甜圈

比方說有一個函式叫max,它有兩個引數,它的功能是求兩個引數中較大的那個數。

例如:a=2,b=4, 則max(a,b)的值是4.

若現在有四個數a,b,c,d,利用max函式求出其中最大的數,怎麼寫呢?顯然有很多方法,像是:max(max(a,b),max(c,d))

max(max(max(a,b),c),d)不知道這個例子能否幫助你理解“遞迴”?

8樓:痕水月

遞迴函式的就是從一個作業的,然後歸到一個男生,然後實現遞迴需要一些特殊條件。

遞迴是什麼意思?

9樓:小小歐平兒

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

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

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

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

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

10樓:百度文庫精選

內容來自使用者:nhz312

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

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

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

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

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

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

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

比如階乘的定義:

(式2-1)

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

(式2-2)

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

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

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

11樓:山間悠客

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

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)); // 否則,遞迴直至完成。}

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

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

13樓:匿名使用者

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

14樓:匿名使用者

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

什麼是函式的遞迴呼叫?正確的函式遞迴條件是什麼?並寫一個簡短的c語言遞迴函式,舉例說明

15樓:匿名使用者

一個函式呼叫它自己, 就叫做遞迴, 遞迴要有終止的條件, 就是一定有一個能執行到的條件使得函式返回一個具體值. 例子樓上兩位舉得很好了.

16樓:匿名使用者

遞迴就是函式自己呼叫自己的函式。

其實遞迴函式的呼叫和其他一般函式呼叫沒有什麼區別,只是在形式上能夠建立迴圈的邏輯呼叫。

遞迴函式一定有個基本要求,就是肯定會滿足某種條件,不再呼叫自身。(否則就無限遞迴,直到記憶體溢位)。

例如,我們計算1到100的所有數相加。

int addrecursion(int curtotle, int a)

呼叫: int result = addrecursion(0,100);

result 的結果就是1到100所有數的總數。

17樓:匿名使用者

樓上正確. 不過換個寫法可能更能體現遞迴的思想#include

int addrecursion(int a)void main()

js的promise如何遞迴呼叫?

18樓:匿名使用者

一.定義 promise是對非同步程式設計的一種抽象。它是一個**物件,代表一個必須進行非同步處理的函式返回的值或丟擲的異常。也就是說promise物件代表了一個非同步操作

題目是 利用函式遞迴呼叫完成。要求定義函式fun將整數的數字逆序。要求在主函式中輸入整數,調

include stdio.h 一次性的函式,此函式只能呼叫一次有效,較為簡單int fun int a 多次重入有效,稍複雜一點 include stdio.h int fun int a return b c void main include stdio.h int fun int c,int...

什麼是遞迴的概念,什麼是“遞迴”?“遞迴”有什麼用?

聲琨 遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。一個示例就是計算階乘。0 的階乘被特別地定義為 1。更大數的階乘是通過計算 1 2 來求得的,每次增加 1,直至達到要計算其階乘的那個數。下面的段落是用文字定義的計算階乘的一個函式。如果這個數小於零,則拒絕接收。如果不是一個...

什麼是遞迴網域名稱

1全部簡單的說就是你在本地網路裡設定的dns網域名稱伺服器。這台網域名稱伺服器會根據你的訪問請求去遞迴的向上級查詢你請求 對應的ip位址,然後反饋回來。想檢視你的遞迴網域名稱伺服器位址,在cmd下輸入ipconfig all,dns那項就是。很多人可能還不知道遞迴網域名稱解析是怎麼一回事?查了一些資...