求100的階乘

2022-03-12 20:36:36 字數 1130 閱讀 8289

這個問題其實並不難,主要是要採用合理的資料結構。

我用的是陣列,int mul[1000],並將每個元素限定在 unit = 100 即 100 進製。

效率的確是有待改進,不過除非你要算宇宙的大小,否則耗時可以忽略不計。

關鍵是簡短易懂,可移植。 

1

#include

<

stdio.h

>23

#define

unit 10045

void

factorial(

intn);67

intmul[

1000

]; /*

1000 個元素, 每個最大為100, 能表達的數超過 1e99,足夠了 */8

9int

main()

1023

24void

factorial(

intn)

2544}45

factorial(n-1

);46}47

}

上面的**有個對0的列印問題(詳見1樓),已進行修正:

1

#include

<

stdio.h

>23

#define

unit 1000

4#define

mul 10000056

void

factorial(

long

intn);78

intmul[mul];

/*每個元素規模為 unit,共 mul 個,總共能儲存 unit ^ mul 規模資料 */9

10int

main()

1129

else

fprintf(fp, "%d

", mul[i]);30}

31getchar();

32fclose(fp);

33exit(0);

34}3536

void

factorial(

long

intn)

3756}57

factorial(n-1

);58}59

}

求算大數(比如100)階乘的思路

求算大數 比如100 階乘的思路 可以把n 的結果放在陣列中,陣列中每個元素都表示n 值的一位.對整數範圍內的n,求n 對於輸入的n想辦法晝精確地估計出n 所佔的位數.就能確定陣列元素的個數 可以將n 表示成10的次冪,即n 10 m 10的m次方 則不小於m的最小整數就是 n 的位數,對該式兩邊取...

遞迴求階乘

遞迴做為一種演算法在程式語言中廣泛應用.是指函式 過程 子程式在執行過程式中直接或間接呼叫自身而產生的重入現像.程式呼叫自身的程式設計技巧稱為遞迴 recursion 注意 1 遞迴就是在過程或函式裡呼叫自身 2 在使用遞迴策略時,必須有乙個明確的遞迴結束條件,稱為遞迴出口。遞迴演算法一般用於解決三...

c語言求大數階乘,10000的階乘

10000以內階乘,在c語言中沒有型別可以以儲存這麼大的數,所以我們可以用陣列來存它,int a 10005 這裡10005只是習慣,當然,也可以用斯特靈公式來算a陣列的大小 下面附上 題解請看 注釋,include int a 100000 int main 這層迴圈使得a陣列每個數都是個一位數 ...