C語言遞迴實現n的階乘(n )

2021-08-28 21:03:54 字數 790 閱讀 2168

非負整數n的階乘可以表示為n! (讀作:n的階乘),其定義如下:

n! = n·(n - 1)• (n - 2)· …·1 (n大於或等於l),且n = 0時,n! = l

例如,5 ! = 5·4·3·2·1 = 120。

請編寫乙個程式,讀入乙個非負整數,計算並輸出其階乘。

思路: 階乘 就是每次用自己乘以自己-1,然後用自己-1在乘自己-1-1……利用遞迴的性質可以很好的實現這個過程。

#include int factorial(int x);

int main(int argc, char const *argv)

int factorial(int x)

else

return x*factorial(x-1);

}

若符合單一出口原則也可將函式部分更改為

int factorial(int x)

else

return f=x*factorial(x-1);

}

牢記遞迴四條基本法則:

基準情形。必須總有某些基準情形,它無須遞迴就能解出。

不斷推進。對於那些需要遞迴求解的情形,每一次遞迴呼叫都必須要使求解狀況朝接近基準情形的方向推進

設計法則。假設所有的遞迴呼叫都能執行。

合成效益法則。在求解乙個問題的同一例項時,切勿在不通的遞迴呼叫中做重複性的工作。

(以上四條出自《資料結構與演算法分析——c語言描述版》)

C語言 n的階乘 遞迴

在不考慮溢位等問題,輸入的數字為乙個正整數時,求該正整數的階乘。實現一 include int fun int x int main void 在不考慮溢位等問題,輸入的數字為乙個正整數時,求該正整數的階乘。要求 不能使用if else while do while for goto語句。實現二 i...

C語言 遞迴求n的階乘

例30 c語言求n!要求用遞迴實現。解題思路 本題和例29思想差不多,都是用遞迴來實現,讀者可以回顧一下 c語言遞迴求年齡 求階乘函式 int factorial int number 自定義階乘函式 else if number 0 number 1 0或者1本身的階乘是1 else return...

C語言 遞迴求n的階乘

例30 c語言求n!要求用遞迴實現。解題思路 本題和例29思想差不多,都是用遞迴來實現,讀者可以回顧一下 c語言 遞迴求年齡 求階乘函式 int factorial int number 自定義階乘函式 else if number 0 number 1 0或者1本身的階乘是1 else retur...