當前位置:學問君>學習教育>考研>

編寫用C語言實現的求n階階乘問題的遞歸算法

學問君 人氣:1.3W

代碼如下:

編寫用C語言實現的求n階階乘問題的遞歸算法

long int fact(int n)

{

int x;

long int y;

if(n<0)

{

printf(“error!”);

}

if(n==0)

return 1;

x=n-1;

y=fact(x);

return (n*y);

}

拓展閱讀:

特點

遞歸算法是一種直接或者間接地調用自身算法的過程。在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效的,它往往使算法的描述簡潔而且易於理解。

遞歸算法解決問題的特點:

(1) 遞歸就是在過程或函數裏調用自身。

(2) 在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱爲遞歸出口。

(3) 遞歸算法解題通常顯得很簡潔,但遞歸算法解題的執行效率較低。所以一般不提倡用遞歸算法設計程序。

(4) 在遞歸調用的過程當中系統爲每一層的返回點、局部量等開闢了棧來存儲。遞歸次數過多容易造成棧溢出等。所以一般不提倡用遞歸算法設計程序。

要求

遞歸算法所體現的“重複”一般有三個要求:

一是每次調用在規模上都有所縮小(通常是減半);

二是相鄰兩次重複之間有緊密的聯繫,前一次要爲後一次做準備(通常前一次的`輸出就作爲後一次的輸入);

三是在問題的規模極小時必須用直接給出解答而不再進行遞歸調用,因而每次遞歸調用都是有條件的(以規模未達到直接解答的大小爲條件),無條件遞歸調用將會成爲死循環而不能正常結束。