c語言的遞迴呼叫怎麼理解更容易學?我看不懂呢

2021-03-04 05:37:09 字數 2443 閱讀 5024

1樓:匿名使用者

一個函式自己bai呼叫自己。

通常du最簡單的例子是zhi

:計算階乘,即dao 5! = 5*4*3*2*1int factorial(int n) else}把自己想象版成電腦,試一試 factorial(5)就會發現權 return 5*4*3*2*1remark:

遞迴函式計算往往比較慢,因太頻繁地自己呼叫自己,很多情況下會有更好的演算法哦。

2樓:匿名使用者

遞迴的結構其實很簡單,兩部分組成

1、結束遞迴的條件,要不然會無限遞迴

專下去2、就是遞迴的公屬式,以什麼樣的方式呼叫自己還有比較複雜的遞迴,就是雙線和多線遞迴

這個就是a呼叫b,b再呼叫c,c再呼叫a,等等的方式多個函式之間的互相呼叫

每個函式都至少有這兩部分組成

3樓:莫給老子拖堂了

重複呼叫本身(求階乘就是不停滴呼叫本身函式,最後逐個返回)

4樓:天下獨孤

從階乘那開始理解,類似階乘

c語言函式遞迴呼叫看不懂了,求教

5樓:尛芯の銥籟

程式語言中,函式func(type a,……)直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下:

對於某一函式f(x),其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞迴函式。

c語言,這個看不懂,遞迴呼叫怎麼結束的?

6樓:岔路程式緣

1、那個return(c);中的c,是前面的表示式計算出來的。

所以,表示式是有意義的。

2、age(5)是用回5做引數呼叫答age()函式。

第一次呼叫時n=5,c=age(4)+2,這時再呼叫age函式;

第二次呼叫時n=4,c=age(3)+2,用到age(3),需要再呼叫;

第三次呼叫時n=3,c=age(2)+2,用到age(2),繼續呼叫;

第四次呼叫時n=2,c=age(1)+2,用到age(1),再呼叫;

第五次呼叫時n=1,c=10,不再呼叫了,返回c即10,作為age(1)的值;

程式返回第四次呼叫的運算公式中:c=age(1)+2=10+2=12,返回12作為age(2)的值;

程式返回第三次呼叫的公式中:c=age(2)+2=12+2=14,返回14作為age(3)的值;

程式繼續返回第二次呼叫的公式c=age(3)+2=14+2=16,返回作為age(4)的值。

程式返回第一次呼叫的公式c=age(4)+2=16+2=18,返回作為age(5)的值。

程式返回主程式,列印age(5)的值18。

c語言:將十進位制正整數轉成二進位制後輸出。圖中源**的遞迴函式是怎麼實現的?看不懂,求詳細點指教..

7樓:匿名使用者

如果n為13,二進位制為1101

那麼程式執行是這樣的:

dtob(13)

dtob(6)

dtob(3)

dtob(1)

最後就是

dtob(13)

printf 0 -------------------0}printf 1 -----------------------1}

8樓:e小小u盤

遞迴函式,在函式體中又呼叫函式本身,上述函式應該不難理解,樓主應該多瞭解進位制轉換,printf("%d",n%2);實際上是輸出了該十進位制數轉換成二進位制數的最後一位,接下來要做的就是輸出二進位制數的倒數第二位,所以又呼叫了dtob,形參作為n/2消掉了最後一個二進位制位,所以在這次呼叫時輸出了倒數第二個二進位制位……函式體中繼續呼叫,輸出的數以此類推,最後會將二進位制數的各位輸出。希望能夠幫到你。

c語言:怎麼樣才能學好遞迴的思想?求高手指教~

9樓:匿名使用者

舉個簡單的例子,你要賺1000塊錢,而你每天只能賺100塊。

此時這個遞迴函式就是賺錢,遞迴的目的是賺到1000塊。在賺足1000塊之前,你得不停的工作,而賺錢這個函式就得不停的呼叫,直到賺足1000塊錢為止。

因此,遞迴只需要知道遞迴何時終止 ,每次遞迴所完成的任務,每次完成任務得到的值與任務目標對比,滿足就結束遞迴,返回你要返回的值。不滿足繼續呼叫這個函式。

10樓:

遞迴就是地推的類比;

第一遞迴必須有一個不用遞迴可以退出的條件。

第二遞迴必須能構達到退出的條件(遞迴必須終止)。

第三消除尾遞迴,保持高效。

很多數學公式不要用遞迴實現,用迭代吧!

11樓:匿名使用者

多學學棧的思想 後進先出

c語言遞迴呼叫漢諾塔,C語言函式遞迴呼叫漢諾塔問題

遞迴演算法的出發點不是由初始條件出發,而是把出發點放在求解的目標上,從所求的未知項出發逐次呼叫本身的求解過程,直到遞迴的邊界 即初始條件 漢諾塔問題的重點是分析移動的規則,找到規律和邊界條件。若需要將n個盤子從a移動到c就需要 1 將n 1個盤子從a移動到b 2 將你第n個從a移動到c 3 將n 1...

c語言函式遞迴呼叫的問題,C語言函式遞迴呼叫問題。

首先要知道fun 是一個定義的函式 fun a 相當於fun 3 由下面的函式定義得出fun 3 又fun 2 再求fun 0 因為0不滿足if裡的條件,所以不執行fun 1 所以是0120,希望樓主看明白 先呼叫fun 3 fun 3 中呼叫fun 2 fun 2 中呼叫fun 1 fun 1 中...

用c語言的遞迴解決分魚問題,用C語言的遞迴解決分魚問題

下面 是我自己寫的,看別人 比較累,所以如果樓主願意,可以看看下面的 我會盡量講解細緻一點。include sub manth,fishleft 引數意義 manth表示第幾個人分魚,fishleft表示他分魚時獲得了多少魚 函式的返回結果是第manth個人分魚時剩餘的條數,如manth 5,fis...