什麼是遞迴函式?怎樣實現遞迴,遞迴函式F n 的遞迴演算法是什麼

時間 2021-10-14 22:23:54

1樓:假面

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

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

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

遞迴有兩個基本要素:

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

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

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

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

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

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

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

2樓:麥香甜甜圈

比方說有一個函式叫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)不知道這個例子能否幫助你理解「遞迴」?

3樓:痕水月

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

遞迴函式f(n)的遞迴演算法是什麼?

4樓:匿名使用者

你先了解這個函式的作用,結果就是 n*(n/(2^1)*(n/(2^2))*(n/(2^3))*(n/(2^4))……*1

n*(n/2)*(n/4)*(n/8)*……*1while( n >= 0)

else

}double result = 1;

while(棧不為空)

printf("%lf",result);

這個是偽**哈,自己去實現

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

5樓:匿名使用者

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

6樓:匿名使用者

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

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

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

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

int addrecursion(int curtotle, int a)

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

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

7樓:匿名使用者

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

int addrecursion(int a)void main()

c語言遞迴函式,請用C語言編寫遞迴函式

遞迴函式 程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。函...

什麼是遞迴的概念,什麼是「遞迴」?「遞迴」有什麼用?

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

編寫遞迴函式GetPower int x,int y ,計算x的y次冪,在主程式中實現輸入輸出用c 相關知識解答)

你愛我媽呀 include using namespace std 遞迴實現,效率不高,注意絕對值的取法。演算法複雜度log n 空間複雜度o logn double getpower int x,int y double ret 0 bool small y 0 y y y 31 y 31 if ...