-
如果只需要確定零的數量,則不需要計算階乘。
如果堅持計算階乘,那麼建議使用精度高的陣列模擬,double屬於浮點數,數字越大誤差越大,double只能保證15位有效位數。
int 型別最多可以數到 12!,long long 或 int64 最多 20!
只要你判斷0的數,其實只要你確定這個因數里包含了多少個5的質因數,而且有很多方法可以求出5的數,你可以用o(n)的複雜度,也可以用o(logn)的複雜度,這要看你的**。
-
階乘確實更大。 我不知道乙個雙精度變數可以儲存多少個階乘,但它必須是有限的,數字越大,誤差越大。 你不妨改變一下演算法,確定在通往階乘的路上能不能被十整除(當然考慮100、1000,這裡需要乙個小迴圈語句來判斷),這應該會擴大可以計算的階乘範圍,但不能是無限的......
-
有多少個零? 然後,您必須找到乙個實現大整數的類來使用,或者編寫自己的類。
第乙個問題是,我不明白這是什麼意思。 你現在不就是衝刺到乙個陣列嗎?
第二個問題是,是的,但你必須自己寫。
-
親愛的您好,在C語言中輸入乙個數字來查詢階乘:在C語言中實現階乘的方法是從鍵盤上輸入乙個數字,找到這個數字的階乘,即n!。 演算法的思想首先要明確階乘的定義,即所謂的n的階乘,即從1開始,乘以乙個比前乙個數字大1的數字,再乘到n,用公式表示:
1×2×3×4×…×n-2)×(n-1)×n=n!具體操作:用迴圈求解問題,設迴圈變數為i,初始值為1,i從1變為n; 將 i 乘以 sum 並將乘積賦值為 sum。
定義變數 sum,並分配初始值 1。 結論 由於階乘一般較大,且會超出整數甚至長整數可以表示的範圍,因此變數的定義不應定義為整數,而應視為雙精度。 在訓練中定義了乙個雙精度變數來儲存結果。
因此,匯出時應注意雙精度號的輸出格式。 i 自增量 1. 直到 i 超過 n。
程式**。
-
1 設計階乘函式。
在數學上,對於 n 的階乘,如果 n 為 0,則返回 1。
否則為 1*2*3*。n. 通過迴圈實現。
2 在 main 函式中輸入需要階乘的值。
3 呼叫函式計算因子。
4 輸出結果。
**:int fac(int n)
int main()
總結。 您好,很高興為您解答。 <>
使用 C++ 編寫階乘函式,使用該函式求任意 5 個正整數的階乘和,如下圖所示; 在本段中,factorial() 函式使用遞迴方法來計算輸入引數的階乘。 <> >>>More