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

2021-05-04 18:23:45 字數 2663 閱讀 1995

1樓:

答案是16;

fit(6)呼叫函式

fit(5)+fit(4)

繼續呼叫

fit(4)+fit(3)+fit(3)+fit(2)繼續呼叫

fit(3)+fit(2)+fit(2)+fit(1)+fit(2)+fit(1)+fit(2)

呼叫fit(2)+fit(1)+fit(2)+fit(2)+fit(1)+fit(2)+fit(1)+fit(2)

n<=2返回2,返回值是 2*8=16

2樓:眼眶的濕潤

這裡 return 的確是要返回了,但是在返回之前必須先算出fib(5)+fib(4)的值

那麼就必須再呼叫fib函式

fib(6)=fib(5)+fib(4)

fib(5)=fib(4)+fib(3)

fib(4)=fib(3)+fib(2)

fib(3)=fib(2)+fib(1)

fib(2)、fib(1)由於n<=2,所以都等2所以fib(3)=2+2=4

fib(4)=4+2=6

fib(5)=4+6=10

fib(6)=10+6=16

3樓:飛丶逐夢

在返回之前要先求出fib(5)和fib(4)的值,才能求和,返回結果,也就是再分別呼叫fib(5)和fib(4),在fib(5)的過程中,因為n>2,所以在fib(5)裡還要算fib(4)和fib(3),在fib(4)裡還要呼叫fib(3)和fib(2),直到n<=2才返回結果,返回的時候是一步步地向它的主調函式返回的,直到返回到fib(5)的這一層,這時fib(5)的值就求出來了,fib(4)也經歷一遍統同樣的過程,才能求出最終的值返回給main();

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

4樓:尛芯の銥籟

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

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

c語言 程式設計題 使用函式遞迴呼叫編寫n!(階乘)——高手請導啊!

5樓:匿名使用者

#include

void main()

float fac(int n)

else

if(n==0||n==1)

f=1;

else

f=fac(n-1)*n;

return(f);}

6樓:

#include

int di(int n)

int main()

c語言 函式遞迴呼叫是怎麼回事?

7樓:匿名使用者

一般來說是自己呼叫自己,一般有兩個分支,乙個分支是呼叫自己,還有乙個分支是結束條件

如求n!

int f(int n)

還有乙個比較複雜一點,是雙向呼叫,也就是a函式呼叫b函式,b函式在呼叫a函式

這樣迴圈呼叫,其實基於這個道理,還有多個函式互相呼叫,不過這樣的情況很少見

但萬變不離其宗,每個函式都有兩個分支,乙個是結束條件,乙個是呼叫函式

8樓:匿名使用者

遞迴呼叫是一種特殊的巢狀呼叫,是某個函式呼叫自己,而不是另外乙個函式。但是呼叫的時候肯定有乙個終止條件,退出遞迴呼叫。

9樓:匿名使用者

函式自己呼叫自己,或兩函式互相巢狀。

10樓:匿名使用者

自己呼叫自己就是遞迴,資料結構中的樹遍歷可以用遞迴實現。

在c語言中用遞迴呼叫的方法求n!

11樓:璐人釔

double jiecheng(double n)

return n * jiecheng(n - 1);}

12樓:匿名使用者

求n的階乘,遞迴,參考**如下:

#include

double fac(int n)

int main()

13樓:匿名使用者

#include

int func(int n)

int main()

執行過程:

-》func(5)

-》5*func(4)

-》5*(4*func(3))

-》5*(4*(3*func(2))))

-》5*(4*(3*(2*func(1))))當n為0的時候停止遞迴,返回結果

由於遇到1的時候返回1,那麼func(1)=1所以結果是5*(4*(3*(2*1))) = 120

14樓:匿名使用者

int fun(int x)

void main()

因為n=n*(n-1)!

所以主要思想是這樣,如果要求的n值為1,則返回1否則返回n*(n-1)!

15樓:匿名使用者

int getn(int n)

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語言程式設計函式呼叫問題

char in if in yi 錯了。char in 只能容納 1 個 ascii 符號。改 char in 4 printf 解方程應用 n n您要解的方程是?n printf 一元二次方程 yi n printf 二元一次方程 er n scanf s in 0 if strcmp in,yi...

c語言 呼叫函式求最大值問題,C語言 呼叫函式求最大值問題

printf 最大的數是 n max printf 最大的數是 d n max printf 最大的數是 d n max a 10 10 這樣應該就可以了!您的程式有多處錯誤。既然是初學,就先把最基本的東西都弄清楚啊,否則別人都不願意幫您。簡單列出您的錯誤如下 1 在max函式內又宣告了a 10 這...