1樓:快樂如風
由於階乘運算的增長速度特別快(比2^n的增長速度快),對於較小整數的階乘運算採用簡單的遞規演算法可以實現,但是對於大整數的乘法(比如1000!),則傳統的遞規演算法就失去了作用。
由於本人的水平不高,用下列拙劣的方式實現,請高人多多指教。具體如下:定義一個很長的陣列,用陣列的每一項表示計算結果的每一位。
例如,7!=5040,a[1000],則a[0]=0,a[1]=4,a[2]=0,a[3]=5。
程式源**:
/***計算大數的階乘,演算法的主要思想就是將計算結果的每一位用陣列的一位來表示:如要計算5!,那麼首先將
*(1) a[0]=1,然後a[0]=a[0]*2,a[0]=2,
*(2) a[0]=a[0]*3,a[0]=6
*(3) a[0]=a[0]*4,a[0]=24,此時a[1]=2,a[0]=4
2樓:五嶽獨尊
階乘演算法(0---10000)
#include
#include
#include
const int n=1000;
int ***pute(unsigned int *s,int n)//s用來儲存一次的計算結果,n為本次計算的乘數,函式返回結果中有效資料的節數
cout< //釋放空間 free(s);} 3樓:匿名使用者 「階乘」即從1開始的連續自然數相乘的積,即n!=1*2*3...*n,這就是它的計算公式。 由於階乘運算的增長速度特別快(比2^n的增長速度快),對於較小的正整數的階乘運算可採用簡單的筆算,但是對於較大的正整數可用計算器或計算機。注意:當正整數過大時,計算器和計算機也算不出來! 當然,有一個近似的公式,斯特林公式:n!≈[√(2πn)[*(n/e)^n ,π和e是無理數,π≈3.14159 ,e≈2.71828 斯特林公式的最大好處就是把階乘化成了指數的形式,在精度不高的情況下,可以使用。 0!=1(規定) 1!=1 2!=1*2=2 3!=1*2*3=6 4!=1*2*3*4=24 5!=1*2*3*4*5=120 6!=1*2*3*4*5*6=720 ...... 4樓:匿名使用者 通俗的講,誰的階乘就是從誰開始乘,一直乘到1為止比如1!=1 2!=2*1 3!=3*2*1 ……9!=9*8*7*6*5*4*3*2*1……n!=n(n-1)(n-2)(n-3)……3*2*1要注意,(1)0!=1這是規定的 (2)階乘拿手算只能一個一個乘,不過可以藉助 計算機來求較大數的階乘 5樓:小靈龍 參考資料 6樓:匿名使用者 大整數階乘的運算(可以計算1000!) 由於階乘運算的增長速度特別快(比2^n的增長速度快),對於較小整數的階乘運算採用簡單的遞規演算法可以實現,但是對於大整數的乘法(比如1000!),則傳統的遞規演算法就失去了作用。 由於本人的水平不高,用下列拙劣的方式實現,請高人多多指教。具體如下:定義一個很長的陣列,用陣列的每一項表示計算結果的每一位。 例如,7!=5040,a[1000],則a[0]=0,a[1]=4,a[2]=0,a[3]=5。 程式源**: /***計算大數的階乘,演算法的主要思想就是將計算結果的每一位用陣列的一位來表示:如要計算5!,那麼首先將 *(1) a[0]=1,然後a[0]=a[0]*2,a[0]=2, *(2) a[0]=a[0]*3,a[0]=6 *(3) a[0]=a[0]*4,a[0]=24,此時a[1]=2,a[0]=4 */public class factorial for(; c != 0; i++) a[0] = i - 1;}} public static void main(string args) system.out.println("\n"+count);}} 7樓:偶是書痴 階乘的定義] 設n為自然數,則 n!=1⋅2⋅3⋯n 稱為n的階乘.並且規定0!=1.又定義 (2n+1)!!= (2n+1)! 2 n n! =1⋅3⋅5⋯(2n+1), (−1)!!=0 (2n)!!= 2 n n! =2⋅4⋅6⋯(2n), 0!!=0 8樓:匿名使用者 呵呵就是從1到n的連續自然數相乘 比如5的 階乘就是1×2×3×4×5 6的 階乘就是1×2×3×4×5×6 100的 階乘就是1×2×3×4×。。。×100懂了吧!? 9樓:匿名使用者 哇!!!!1樓的人c語言學的真好。我都忘光了,記得當初還編譯過的,現在全忘了。真厲害啊/ 階乘的公式是什麼 10樓:老衲吃橘子 n!=1×2×3×...×n。階乘亦可以遞迴方式定義:0!=1,n!=(n-1)!×n。 亦即n!=1×2×3×...×n。階乘亦可以遞迴方式定義:0!=1,n!=(n-1)!×n。 雙階乘用「m!!」表示。 當 m 是自然數時,表示不超過 m 且與 m 有相同奇偶性的所有正整數的乘積。如: 當 m 是負奇數時,表示絕對值小於它的絕對值的所有負奇數的絕對值積的倒數。 當 m 是負偶數時,m!!不存在。 任何大於等於1 的自然數n 階乘表示方法: 11樓:sky註冊賬號 n!=1×2×3×...×n或者0!=1,n!=(n-1)!×n例如,求1x2x3x4...xn的值,此時可以用階乘的方式表示: n!=1×2×3×...×(n-1)n或者n!=(n-1)!×n一個正整數的階乘(factorial)是所有小於及等於該數的正整數的積,並且0的階乘為1。自然數n的 階乘寫作n!。2023年,基斯頓·卡曼引進這個表示法。階乘常用於計算機領域。 大於等於1 任何大於等於1 的自然數n 階乘表示方法: n!=1×2×3×...×(n-1)n或n!=(n-1)!×n0的階乘 其中0!=1 12樓:匿名使用者 公式:n!=n*(n-1)! 階乘的計算方法 階乘指從1乘以2乘以3乘以4一直乘到所要求的數。 例如所要求的數是4,則階乘式是1×2×3×4,得到的積是24,24就是4的階乘。 例如所要求的數是6,則階乘式是1×2×3×..×6,得到的積是720,720就是6的階乘。 例如所要求的數是n,則階乘式是1×2×3×…×n,設得到的積是x,x就是n的階乘。 階乘的表示方法 在表達階乘時,就使用「!」來表示。如x的階乘,就表示為x! 他的原理就是反推,如,舉例,求10的階乘=10*9的階乘(以後用!表示階乘)那麼9!=? ,9!=9*8!,8! =8*7!,7!=7*6! ,6!=6*5!,5! =5*4!,4!=4*3! ,3!=3*2!,2! =2*1!,1的階乘是多少呢?是1 1! =1*1,數學家規定,0!=1,所以0!=1! 然後在往前推算,公式為n!(n!為當前數所求的階乘)=n(當前數)*(n-1)! (比他少一的一個數n-1的階乘把公式列出來像後推,只有1的!為1,所以要從1開始,要知道3!要知道2! 就要知道1!但必須從1!開始推算所以要像後推,如果遍程式演算法可以此公式用一個函式解決,並且巢狀呼叫次函式,,)把數帶入公式為, 1! =1*1 2!=2*1(1!) 3! =3*2(2!) 4=4*6(3!),如果要是程式設計,怎麼解決公式問題呢 首先定義演算法 //演算法,1,定義函式,求階乘,定義函式fun,引數值n,(#include long fun(int n ) //long 為長整型,因20!就很大了超過了兆億 (數學家定義數學家定義,0!=1,所以0!=1!,0與1的階乘沒有實際意義) 2,函式體判斷,如果這個數大於1,則執行if(n>1)(往回退算,這個數是10求它!,要從2的階乘值開始,所以執行公式的次數定義為9,特別需要注意的是此處,當前第一次寫入**執行,已經算一次) 求這個數的n階乘(公式為,n!=n*(n-1)!,並且反回一個值, return (n*(fun(n-1));(這個公式為,首先這個公式求的是10的階乘,但是求10的階乘就需要,9的階乘,9的階乘我們不知道,所以就把10減1,也就是n-1做為一個新的階乘,從新呼叫fun函式,求它的階乘然後在把這個值返回到 fun(n-1),然後執行n*它返回的值,其實這個公式就是呼叫fun函式的結果,函式值為return 返回的值,(n-1)為引數依次類推,...一值巢狀呼叫fun函式, 到把n-1的值=1, 注意:此時已經執行9次fun()函式算第一次執行,,呼叫幾次fun函式呢?8次函式,所以,n-1執行了9次,n-1=1 ,n=2已經呼叫就可以求2乘階值 13樓:天涯客 除了樓上說的階乘,還有一種叫雙階乘,用!!表示,一個感嘆號是階乘,兩個感嘆號是雙階乘,雙階乘的演算法,比如 7!!=1*3*5*7 8!!=2*4*6*8 14樓:葬花的饕餮 n!=1×2×3×...×n。階乘亦可以遞迴方式定義:0!=1,n!=(n-1)!×n。 階乘是基斯頓·卡曼(christian kramp,1760~1826)於 1808 年發明的運算子號,是數學術語。 一個正整數的階乘(factorial)是所有小於及等於該數的正整數的積,並且0的階乘為1。自然數n的階乘寫作n!。2023年,基斯頓·卡曼引進這個表示法。 擴充套件資料 嚴謹的階乘定義應該為:對於數n,所有絕對值小於或等於n的同餘數之積。稱之為n的階乘,即n! 對於複數應該是指所有模n小於或等於│n│的同餘數之積。。。對於任意實數n的規範表示式為: 正數 n=m+x,m為其正數部,x為其小數部 負數n=-m-x,-m為其正數部,-x為其小數部 include include main printf e f n e includeint a int n int main 編寫函式,計算s 1 2的階乘分之一 3的階乘分之一 n的階乘分之一,然後編寫主函式 include using namespace std int f int i int... 說的簡單一點是人為規定的,但它是有道理的,你想過沒有,為什麼不規定0!0呢?因為階乘是一個遞推定義,n n n 1 那麼必然有一個初值需要人為規定。我們知道1 1,根據1!1 0!所以0!1而不是0或其他的值。0 是人為規定出來的.因為 n 1 n n 當n 1時,0 1 1 1 即0 1,這是為了... 1 開啟vs6.0軟體,準抄備一個後襲綴為cpp的檔案,在c 檔案中首先寫入標頭檔案,定義一個處理階乘的函式,接著寫一個空的main函式 2 接著是階乘recv函式邏輯,該函式有一個形參n用來接收輸入的數。n的階乘是所有正整數的乘積,這裡的處理是sum不斷的用遞迴的方法乘以recv函式的輸入數,每次...一得階乘分之一加二的階乘分之一n的階乘分之一
為什麼0的階乘等於,為什麼0的階乘等於
用c 語言求n的階乘,用c 語言求n的階乘