C 讀程式題,有遞迴函式

時間 2025-01-31 07:25:28

1樓:網友

兄弟,你犯了小錯誤,m=4之後呼叫兩次,fun(1,3);fun(5,8);/注意這時候是m+1=5不是3

拿不準,在環境中執行一下就可以檢驗出來,我加了乙個列印語句。

#include

using namespace std;

void fun(int b, int t)int m;

cout<<"recursion once fun("if(bm=(b+t)/2;

coutfun(m+1,t);

void main(void)

fun(1,8);

執行結果:recursion once fun(1,8)recursion once fun(1,3)recursion once fun(1,1)recursion once fun(3,3)recursion once fun(5,8)recursion once fun(5,5)recursion once fun(7,8)recursion once fun(7,6)recursion once fun(8,8)

2樓:網友

遞迴呼叫到最後不滿足條件時才會返回,繼續下一行。

8) m=4

3) m=2 //b=1 t=3 m=2,1) /返回,執行func(m+1,t),3) /返回,執行1.步下的func(m+1,t),8) m=6

5)//返回。

8) m=7

6)//返回。

8)//返回。

結束。不滿足b

一道數學題如何通過c語言的遞迴函式實現,求大佬指點迷津

3樓:細雨在微笑

此題邏輯還是有一點複雜的,分析、實現**及輸出 見下圖。

4樓:

這個就是菲波列切問題,有兩個數都為 1,1,然後從第三個數字開始 當前的值為前兩個數字的和,1, 1, 2, 3, 5, 8, 13,..

c語言題.用遞迴法寫乙個求冪的函式,並在主函式實現呼叫.要用c語言,不要c++的。 提示

5樓:網友

#include

int main()

以下是求冪的函式。

int pow(int a,int b)

用c++語言編寫程式,遞迴函式

6樓:網友

1、在數學上,關於遞迴函式的定義如下:對於某一函式f(x),其定義域是集合a,那麼若對於a集合中的某乙個值x0,其函式值f(x0)由f(f(x0))決定,那麼就稱f(x)為遞迴函式。 在程式語言中,把直接或間接地呼叫自身的函式稱為遞迴函式。

函式的構建通常需要乙個函式或者乙個過程來完成。

2、遞迴函式 是建立在巢狀的基礎上的,只不過巢狀呼叫了自己本身,而且經常不是顯式呼叫。乙個含直接或間接呼叫本函式語句的函式被稱之為遞迴函式,它必須滿足以下兩個條件:

1) 在每一次呼叫自己時,必須是(在某種意義上)更接近於解;

2) 必須有乙個終止處理或計算的準則。

例如乙個非法的遞迴(巢狀)呼叫:

void ff()

int main()

計算機c++中遞迴函式問題

7樓:網友

遞迴函式就是 函式里面呼叫函式自己,經曲的例子就是: 從前有座山,山上有座廟,廟裡有個老和尚對小和尚說:「從前有座山,山上有座廟,廟裡有個老和尚對小和尚說:

從前有座山,山上有座廟,廟裡有個老和尚對小和尚。

當然如果只是像上面舉的這個例子,這個遞迴函式就沒完沒了,永遠也退不出來,所以有意義的遞迴函式就是在函式內部必須有某種情況不再呼叫自己的處理。以你這個例子來說。

if(size<2) return;就是用來結束遞迴呼叫了,也就是說,只要size>=2 這個遞迴呼叫就會一直呼叫下去,所以每次遞迴呼叫的時候,傳入的size必然是要越來越小的。

再根據你的函式,a其實是陣列首位址,size是陣列大小,當他開始遞迴呼叫reserve的時候,傳進去的位址變成了a+1,也就是首位址往後移了一位,可知陣列大小得減少一位,也就是size-1

8樓:網友

void reverse是乙個函式,在這個函式內部又使用了reverse這個函式,此為遞迴。如a(n)=a(n-1)+1,乙個道理。

9樓:匿名使用者

這個相對來說比較容易理解。

意思是第i個和倒數第i個數值交換,因此實現了倒轉。a+1表示新陣列,size-1表示新陣列的長度。

c程式遞迴

10樓:義昀欣

age(5)說起來太羅嗦,我以age(3)為例。

1.假如main中呼叫age(3),在進入age(3)函式後,因為n不等於1,所以執行 c=age(n-1)+2;這句話意思是先執行 age(n-1)也就是age(2),將age(2)得到的運算結果加上2賦值給c。

2.接下來,程式執行age(2)。因為n不等於1,所以執行 c=age(n-1)+2;這句話意思是先執行 age(n-1)也就是age(1),將age(1)得到的運算結果加上2賦值給c。

3.接下來,程式執行age(1),此時,n等於1,所以c被賦值為10.

4.接下來,返回到age(2)中,c=age(1)+2=10+2=12.

5.接下來,返回到age(3)中,c=age(2)+2=12+2=14.然後,return c。

6.程式返回到main函式,列印age(3)返回的結果,也就是14.

11樓:

age(n-1)+2;這個表示式其實就是遞迴呼叫了int age(int n)這個函式。

以上程式等同於:

#include ""

int age(int n)

void main()

d=age(5)=age(4)+2=(age(3)+2)+2=((age(2)+2)+2)+2=(((age(1)+2)+2)+2)+2=18

如果函式的遞迴呼叫你沒有學過的話。我只能用下面的話給你講了。

按照如上程式:

先求age(5),會返回age(4)+2;但是age(4)我們也不知道,所以就求age(4);會返回age(3)+2;同理求age(3)後會返回age(2)+2;求age(2)後會返回age(1)+2;我們知道當n=1時;程式會返回10;

這樣的話我們就可以得到age(5)=age(4)+2=age(3)+2+2

age(2)+2+2+2

age(1)+2+2+2+2

求解完畢。

12樓:幻☆天芒

結果應該是18。首先age(5) 傳入是n=5,因為n!=1,執行else 語句。

age(5)=age(4)+2;此時n=4,同理,n!=1,執行else語句。age(4)=age(3)+2;age(3)=age(2)+2;age(2)=age(1)+2;age(1)時,n=1,所以執行c=10;再一次加回去。

age(5)=10+2+2+2+2=18.

13樓:網友

age(int)函式一層一層往裡套,知道引數等於1,返回10,在一層一層往外扒,脫到最後一層,得出c值。

2就是每層(n!=1時)都累加。

14樓:

樓上解釋的都是對的,age(n-1)+2,其實就是乙個函式自呼叫,這是函式執行age(n-1),加2,就暫時壓入棧,先不執行,知道遞迴的條件結束,也就是n==1.

c語言,求這道題用遞迴函式的答案題目如圖

15樓:網友

遞迴,就是在執行的過程中呼叫自己。

構成遞迴需具備的條件:

函式巢狀呼叫過程示例。

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

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

在數學和電腦科學中,遞迴指由一種(或多種)簡單的基本情況定義的一類物件或方法,並規定其他所有情況都能被還原為其基本情況。

例如,下列為某人祖先的遞迴定義:

某人的雙親是他的祖先(基本情況)。某人祖先的雙親同樣是某人的祖先(遞迴步驟)。斐波納契數列(fibonacci sequence),又稱**分割數列,指的是這樣乙個數列:

..i[1]

斐波納契數列是典型的遞迴案例:

遞迴關係就是實體自己和自己建立關係。

fib(0) = 1 [基本情況] fib(1) = 1 [基本情況] 對所有n > 1的整數:fib(n) = (fib(n-1) +fib(n-2)) 遞迴定義] 儘管有許多數學函式均可以遞迴表示,但在實際應用中,遞迴定義的高開銷往往會讓人望而卻步。例如:

階乘(1) = 1 [基本情況] 對所有n > 1的整數:階乘(n) = (n * 階乘(n-1)) 遞迴定義] 一種便於理解的心理模型,是認為遞迴定義對物件的定義是按照「先前定義的」同類物件來定義的。例如:

你怎樣才能移動100個箱子?答案:你首先移動乙個箱子,並記下它移動到的位置,然後再去解決較小的問題:

你怎樣才能移動99個箱子?最終,你的問題將變為怎樣移動乙個箱子,而這時你已經知道該怎麼做的。

如此的定義在數學中十分常見。例如,集合論對自然數的正式定義是:1是乙個自然數,每個自然數都有乙個後繼,這乙個後繼也是自然數。

德羅斯特效應是遞迴的一種視覺形式。圖中女性手持的物體中有一幅她本人手持同一物體的小**,進而小**中還有更小的一幅她手持同一物體的**,依此類推。

德羅斯特效應。

又例如,我們在兩面相對的鏡子之間放一根正在燃燒的蠟燭,我們會從其中一面鏡子裡看到一根蠟燭,蠟燭後面又有一面鏡子,鏡子裡面又有一根蠟燭……這也是遞迴的表現。

C 函式遞迴問題,C 用函式遞迴求1 2 到n的問題

const int len 66 const int divs 6 void subdivide char ar,int low,int high,int level int tmain int argc,tchar ar return 0 將陣列ar子分,並在子分構成中不斷在子分的子串中間賦值為 ...

c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?

問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...

一道c語言讀程式題,一道c語言讀程式題 include stdio h main int k 4,m 1,p p func k,m printf d, ,p p func

首先輸出結果是 8,17 第二,你上面這個程式編譯不了的,有2個問題 1 函式的返回值型別沒寫 2 func 函式體放在了main 函式後面且沒再main 函式中宣告。第三,註釋該程式 include 標頭檔案 void main 修改1 增加了void int func int a,int b 第...