如何進行遞迴定義?C語言中函式可以遞迴定義嗎

2025-07-28 20:58:45 字數 2956 閱讀 8791

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

1樓:假面

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

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

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

遞迴有兩個基本要素:

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

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

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

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

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

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

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

2樓:網友

遞迴就是本身呼叫自己。

如n!=n(n-1)!

你定義函式f(n)=nf(n-1)

而f(n-1)又是這個定義的函式。。這就是遞迴。

實現遞迴。簡單說來從未知的推到已知的。

如:3!=3*2!

1!=1(已知的)

然後從已知再返**用給上一層。到你所要求的1!=1(已知)

遞迴結束。

3樓:麥香甜甜圈

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

4樓:痕水月

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

c語言中函式可以遞迴定義嗎

5樓:網友

函式可以遞迴。

標準的c中函式不允許巢狀(在函式中定義另乙個函式)

6樓:網友

什麼意思?你是指「遞迴函式」?

例如求n!的遞迴函式。

fun(n)

如何是"原始"型別定義的非遞迴

7樓:南京新華電腦專修學院

每個物件裡都有乙個equals方法,呼叫下就可以比較是否相等了。

j**a中如何進行遞迴類別操作?

8樓:匿名使用者

遞迴的問題好解決,只是你的這個問題,貌似不好理解。你好像是想通過遞迴程式來判定乙個類的成員變數的複雜物件裡面最底層的物件型別是什麼。你想通過遞迴程式來完成對類裡面物件的查詢功能,是麼?

9樓:匿名使用者

資料庫結構有做過類似的題。

你必須要在方法中定義子類在哪才能通過遞迴來找到。

父類也是如此。

你不定義的話,丟了乙個類進去,也不知道它的子類是誰。

j**a中遞迴演算法是什麼怎麼算的?

10樓:網友

簡單點說是在方法中呼叫自己,直到某一條件退出。

11樓:網友

遞迴做為一種演算法在程式設計語言中廣泛應用。是指函式/過程/子程式在執行過程遞迴的作用:遞迴演算法可以解決一些通過遞迴定義的題目。首先需要明白什麼是遞迴。

自定義函式中的遞迴是如何實現的

12樓:網友

遞迴呼叫就是不停呼叫自己,當遇到遞迴結束條件層層返回。 你想搞清楚這個問題的話,你去學一下 棧。

請給出樹的遞迴定義。

13樓:寧小哥的分享

樹的定義。

樹(tree)是包含n(n>0)個結點的有窮集合,其中:

1)每個元素稱為結點(node);

2)有乙個特定的結點被稱為根結點或樹根(root)。

3)除根結點之外的其餘資料元素被分為m(m≥0)個互不相交的結合t1,t2,……tm-1,其中每乙個集合ti(1<=i<=m)本身也是一棵樹,被稱作原樹的子樹(subtree)。

樹也可以這樣定義:樹是有根結點和若干顆子樹構成的。樹是由乙個集合以及在該集合上定義的一種關係構成的。

集合中的元素稱為樹的結點,所定義的關係稱為父子關係。父子關係在樹的結點之間建立了乙個層次結構。在這種層次結構中有乙個結點具有特殊的地位,這個結點稱為該樹的根結點,或稱為樹根。

我們可以形式地給出樹的遞迴定義如下: 單個結點是一棵樹,樹根就是該結點本身。 設t1,t2,..

tk是樹,它們的根結點分別為n1,n2,..nk。用乙個新結點n作為n1,n2,..

nk的父親,則得到一棵新樹,結點n就是新樹的根。我們稱n1,n2,..nk為一組兄弟結點,它們都是結點n的子結點。

我們還稱n1,n2,..nk為結點n的子樹。

空集合也是樹,稱為空樹。空樹中沒有結點。

什麼是遞迴?遞迴定義應滿足的兩個最基本的準則是什麼

14樓:匿名使用者

遞迴:就是乙個函式直接或間接的呼叫函式本身,這就是遞迴;

兩個基本準則是:《1》終止處理《2》計算。

c語言中如何定義二維陣列,C語言中如何定義一個二維陣列

int a 2 3 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 表示兩行三列 include main int i,j,total 0 for i 0 i 3 i printf n printf total d n total 用指標new出來 二維陣列定義必須規定列 i...

關於C語言中陣列的定義,C語言中如何定義陣列

一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫 void swp int p 在呼叫的時候swp array 也是可以的。只要傳遞給函式一個陣列的首指標就行了,而你的array正好是陣列的首指標。char s 10 123 是表示前三個元素分別是1,2,3但s 2 0 ...

如何進行C語言程式設計,c語言編寫的程式如何執行?

incclude define pi void mian float r,area,c,s,v,v r半徑area圓面積c圓周長s圓球表面積v圓納哪球體積v圓柱體積 r h area pi r r c pi r s pi r r v v area h printf 圓周長 f c,圓面積 f are...