1樓:匿名使用者
a為入口引數,及相當於子函式當中的n,a為1的時候,返回值為1;
否則就是為上一次的結果×a×(a-1);//這裡的a為迴圈函式中的新一輪的a的值
給我解釋一下c語言遞迴函式?
2樓:匿名使用者
遞迴演算法:是一種直接或者間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。
遞迴演算法的特點
遞迴過程一般通過函式或子過程來實現。
遞迴演算法:在函式或子過程的內部,直接或者間接地呼叫自己的演算法。
遞迴演算法的實質:是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫函式(或過程)來表示問題的解。
遞迴演算法解決問題的特點:
(1) 遞迴就是在過程或函式裡呼叫自身。
(2) 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。
(3) 遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效率較低。所以一般不提倡用遞迴演算法設計程式。
(4) 在遞迴呼叫的過程當中系統為每一層的返回點、區域性量等開闢了棧來儲存。遞迴次數過多容易造成棧溢位等。所以一般不提倡用遞迴演算法設計程式。
遞迴演算法所體現的「重複」一般有三個要求:
一是每次呼叫在規模上都有所縮小(通常是減半);
二是相鄰兩次重複之間有緊密的聯絡,前一次要為後一次做準備(通常前一次的輸出就作為後一次的輸入);
三是在問題的規模極小時必須用直接給出解答而不再進行遞迴呼叫,因而每次遞迴呼叫都是有條件的(以規模未達到直接解答的大小為條件),無條件遞迴呼叫將會成為死迴圈而不能正常結束。 例子如下:
描述:把乙個整數按n(2<=n<=20)進製表示出來,並儲存在給定字串中。比如121用二進位制表示得到結果為:「1111001」。
引數說明:s: 儲存轉換後得到的結果。
n: 待轉換的整數。
b: n進製(2<=n<=20)
void
numbconv(char *s, int n, int b)
/* figure out first n-1 digits */
numbconv(s, n/b, b);
/* add last digit */
len = strlen(s);
s[len] = "0123456789abcdefghijklmnopqrstuvwxyz"[n%b];
s[len+1] = '\0';
}void
main(void)
exit(0);}
3樓:匿名使用者
額,抽象的說就是解決乙個問題時重複使用乙個動作,那麼就可以用遞迴的方式來解決,告訴電腦重複做這個動作就行.結合看一些遞迴演算法的簡單程式,應該好懂些.
4樓:申冰潔隱祺
分析一下fac()是如何執行的。假設讀入的n=3。
首先,main()函式中的y=fac(3),引起第1次函式呼叫。進入函式後實參n=3,應執行計算3*fac(2)
為了計算fac(2),引起對fac()函式的第2次呼叫(遞迴呼叫),重新進入函式fac(),實參n=2,應執行計算2*fac(1)。
為了計算fac(1),引起對函式fac()的第3次呼叫(遞迴呼叫),重新進入函式,實參n=1,應執行計算1*fac(0)。
為了計算叫fac(0),引起對函式fac()的第4次呼叫(遞迴呼叫),重新進入函式,實參n=0,此時執行f=1和return(f),完成第4次呼叫,回送結果fac(0)=1,返回到第3次呼叫層。
計算執行f=1*fac(0)和return(f),完成第3次呼叫,回送結果fac(1)=1
返回到第2次呼叫層。
計算執行f=2*fac(1)和return(f)。完成第2次呼叫,回送結果fac(2)=2,返回到第1次呼叫層。
計算執行f=3*fac(2)和return(f).完成第1次呼叫,回送結果fac(3)=6,返回到土函式。
5樓:匿名使用者
先看看下面的例子:
void fun(int i)
printf("%d\n",i);
}intmain()
後如下:好理解
了吧void fun(int i)
printf("%d\n",i/4);
}printf("%d\n",i/2);
}printf("%d\n",i);
}這樣一展開,是不是清晰多了
c語言遞迴函式題,大神給我解釋一下。
6樓:匿名使用者
階乘函式
=f(10)
=10 * f(9)
=10 * 9 * f(8)
.........
=10 * 9 * 8 * 7 * ..... f(1)=10 * 9 * 8 * 7 * ..... 1 * f(0) //0 < 1不符合if return1 結束
誰幫我解釋下以下**,c語言用遞迴函式,實現將乙個十進位制整數轉換成二進位制整數輸出
7樓:匿名使用者
#include
void f(int n)/*可以自複選乙個值,製畫**決問題*/
int main()
return 0;}
誰能幫忙解釋一下這首詩誰能幫我解釋一下這首詩?
李商隱 無題 賞析 相見時難別亦難,東風無力百花殘。春蠶到死絲方盡,蠟炬成灰淚始乾。曉鏡但愁雲鬢改,夜吟應覺月光寒。蓬山此去無多路,青鳥殷勤為探看。註釋 相見 兩句說 相見難得,離別是更難捨難分,又何況是在百花凋謝的暮春時節分別啊!絲 雙關語,與 思 諧音。蠟炬 j 蠟燭。淚 蠟燭燃燒時下流的油脂叫...
幫我解釋一下這是什麼意思,誰能幫我解釋一下這是什麼意思?
這是個迴圈叫foreach 和for迴圈一樣的。舉個例子 int numarray for int i numarray 結果會回是答123456 等價於for int i i numarray.length i 這是一種新du型的for迴圈 employees是乙個zhiemployee型別的數d...
誰能幫我解釋一下這個物理實驗,誰能幫我解釋解釋一下
有 實驗時發現接復通制後電壓 0 3v 表沒有 bai示數,電流表 0 0.6a 也沒有示du數 可能是zhi電池短路 但有 取下dao被測電阻,電壓表示數為電源電動勢,電流表仍不變 可以確定電路連線是正常的 所以那就是滑動變阻器調的電阻值遠遠大於被測電阻的阻值 取下被測抄電阻後,電路斷路,電壓表示...