直接遞迴呼叫和間接遞迴呼叫區別,c語言中巢狀呼叫和遞迴呼叫的區別

時間 2022-04-13 01:52:39

1樓:久夢如琳

1、區別就是直接遞迴呼叫呼叫的是函式本身而間接遞迴呼叫呼叫的是其他函式。例如:在函式a(或過程)中直接引用(呼叫)函式a本身就是直接遞迴呼叫。

在函式a(或過程)中呼叫另外乙個函式b,而該函式b又引用(呼叫)了函式a就是間接遞迴呼叫。

2、直接遞迴是在a函式中巢狀使用a函式然後有乙個停止該函式的條件;間接遞迴是在a函式中呼叫b函式,然後在b函式中呼叫a函式,實現遞迴。

擴充套件資料

遞迴呼叫就是在當前的函式中呼叫當前的函式並傳給相應的引數,這是乙個動作,這一動作是層層進行的,直到滿足一般情況的的時候,才停止遞迴呼叫,開始從最後乙個遞迴呼叫返回。

遞迴函式特點:

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

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

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

2樓:匿名使用者

直接遞迴呼叫就是在函式a(或過程)中直接引用(呼叫)函式a本身

間接遞迴呼叫就是在函式a(或過程)中呼叫另外乙個函式b,而該函式b又引用(呼叫)了函式a

c語言中巢狀呼叫和遞迴呼叫的區別

3樓:諾諾百科

一、作用不同:

函式巢狀允許在乙個函式中呼叫另外乙個函式,比如有三個函式 例:funca() funcb() funcc() {cout << "hello" <遞迴呼叫是一種解決方案,在程式中,遞迴函式的限制條件就是變數quotient為零。在每次遞迴呼叫之前,我們都把quotient除以10,所以每遞迴呼叫一次,它的值就越來越接近零。

當它最終變成零時,遞迴便告終止。

二、含義不同:

巢狀呼叫,就是函式裡面呼叫函式,呼叫的是誰沒關係,都屬於巢狀。

遞迴呼叫,就是函式呼叫本身。

三、呼叫方式不同:

巢狀呼叫說的是呼叫其它函式。

遞迴呼叫是指自己呼叫自己。

4樓:房思博

巢狀呼叫就是某個函式呼叫另外乙個函式遞迴呼叫是乙個函式直接或間接的呼叫自己舉幾個例子a呼叫b(巢狀)b呼叫c(巢狀)a呼叫a(遞迴)a呼叫b b呼叫a (遞迴)a呼叫b b呼叫c c呼叫a (遞迴)

5樓:植木舞

巢狀呼叫這個詞我沒聽過,不過感覺你的理解應該是正確的,就是函式在呼叫函式,這也沒什麼可稀奇的。至於遞迴,一般只乙個函式呼叫它本身。當然不是沒完了,會通過條件限制最終會結束的比如int fun(int a)這是那個求台階走法的函式。

你可以先不管功能,你看遞迴的過程中引數會越來越小,知道1和2,而1和2是直接出結果的,而不是呼叫函式,這樣遞迴就能結束了。如果沒有條件限制的自己呼叫自己那不是遞迴那是死迴圈。

程式的遞迴演算法與非遞迴有什麼區別?

6樓:南北

遞迴演算法是一種直接或者間接地呼叫自身的演算法。

在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。

遞迴就是在過程或函式裡呼叫自身。

在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。

遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效率較低。所以一般不提倡用遞迴演算法設計程式。

在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位。

什麼是遞迴呼叫

7樓:小小歐平兒

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

遞迴函式特點:

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

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

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

8樓:匿名使用者

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

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

int fun(n)

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

9樓:歪生

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

10樓:匿名使用者

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

11樓:匿名使用者

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

function recursion(i)}

c語言的函式巢狀呼叫與函式遞迴呼叫有什麼區別

12樓:一嘆

區別:函式的巢狀呼叫是指在乙個c語言函式裡面在執行另乙個函式,這樣通常稱為函式的巢狀呼叫。而函式的遞迴呼叫,一般指的是這個c語言函式呼叫自己本身的函式也就是說呼叫函式的函式體是一樣的,這樣稱為遞迴呼叫。

13樓:

函式的巢狀呼叫是在乙個函式裡面呼叫另乙個函式。假如說現在有3個函式,函式a,函式b,函式c,a()—>b()—>c(),這裡舉其中一種函式巢狀呼叫方式,函式a裡面呼叫了函式b,函式b裡面呼叫了函式a。**如下:

void a()

void b()

void c()

函式的遞迴呼叫是只函式自身呼叫函式自身。舉例說明void a()

//具體示例函式,使用遞迴方法求fibonacci數列int fibonacci(int n)

if(n==1 || n==2)  //遞迴結束條件return 1;

else

sum=fibonacci(n-1)+fibonacci(n-2);  //呼叫函式本身

return sum;

}遞迴函式必須要有遞迴結束條件,否則就會無限遞迴下去,直至耗盡記憶體空間。

14樓:風若遠去何人留

巢狀呼叫,就是函式裡面呼叫函式,呼叫的是誰沒關係,都屬於巢狀。

遞迴呼叫,就是函式呼叫本身。必須是自己呼叫自己。

所以 遞迴呼叫是巢狀呼叫的一種特別形式。

15樓:

用函式1呼叫函式2,函式2再呼叫函式3……原則上沒有深度限制,這就是巢狀呼叫。顯然遞迴呼叫是典型的巢狀呼叫,只是遞迴呼叫是函式自身呼叫自己而已……

16樓:森北的地方

函式巢狀呼叫主要是指是各個函式間互相呼叫;

遞迴呼叫是在這個函式中呼叫它本身,自己呼叫自己

17樓:

巢狀呼叫說的是呼叫其他函式,遞迴呼叫是指自己呼叫自己

18樓:匿名使用者

巢狀呼叫呼叫的是其它函式 ,而遞迴呼叫的是自身

c語言函式的遞迴呼叫,C語言的函式巢狀呼叫與函式遞迴呼叫有什麼區別

是的,區域性變數會新定義一次,不過僅侷限於區域性變數 全域性變數和靜態變數都是全域性的,要是還沒學暫時不用管 並不能說是 同時 應該說是 同樣 時間上肯定是按照呼叫的先後順序的。遞迴確實會讓程式變慢,但只是相對於不需要遞迴的等價 而且原因也不是記憶體分配導致的,而是因為函式呼叫產生的。這個遞迴呼叫怎...

C語言的函式呼叫是遞迴嗎,C語言的函式呼叫是遞迴嗎?

沒記錯的話,c語言中的函式直接或間接呼叫自己的過程叫遞迴例如 有main函式,函式a,c。直接呼叫型遞迴 main函式呼叫函式a,而a不能直接解決問題,所以改變引數後去再次呼叫函式a。比如有三個人,人1說他比人2小1歲,人2說他比人3小一歲,人3說他10歲,求人1幾歲。就需要遞迴解決,簡介呼叫就是m...

題目 利用遞迴函式呼叫方式,將所輸入的字元,以相反順序列印出來

include void pt char p else return 到最後乙個字元,返回進行列印 int main include stdio.h void c int j,char b void main c j,a printf n void c int j,char b 僅供參考 inclu...

利用遞迴函式呼叫方式,將所輸入的字元,以相反順序列印出來

include void pt char p else return 到最後乙個字元,返回進行列印 int main include include include include void backprint char a,int length void main void backprint c...

c語言中自定義函式中遞迴呼叫是怎樣工作的

先說工作原理 首先要清楚,遞迴就是某個函式直接或間接地呼叫了自身,這種呼叫方式叫做遞迴呼叫。說白了,還是函式呼叫。既然是函式呼叫,那麼就有乙個雷打不動的原則 所有被呼叫的函式都將建立乙個副本,各自為呼叫者服務,而不受其他函式的影響。你的ff函式,遞迴多少次,就有多少個副本,再利用記憶體的棧式管理,反...