非負整數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...