1樓:理陽波
以下為c++求階乘的四種方法,需要注意的是,各個**只是提供了求階乘的思路,以便在實際需要時再來編碼,各個程式都在1到10內測試正確。
1、該程式在每次輸入n時,都會呼叫fac()來暴力計算以得到結果:
2、該程式利用了陣列記錄已得到的結果,並在計算下一個結果時利用了已得到的結果。
3、應該說該**實用性最差,主要是來學習靜態區域性變數來了。
4、此**較不常用,思路比較新奇,但可以嘗試。
擴充套件資料執行程式後,1-10的結果如下,可供檢驗:
1、當i為:1時階乘值為:1
2、當i為:1時階乘值相加為:1
3、當i為:2時階乘值為:2
4、當i為:2時階乘值相加為:3
5、當i為:3時階乘值為:6
6、當i為:3時階乘值相加為:9
7、當i為:4時階乘值為:24
8、當i為:4時階乘值相加為:33
9、當i為:5時階乘值為:120
10、當i為:5時階乘值相加為:153
11、當i為:6時階乘值為:720
12、當i為:6時階乘值相加為:873
13、當i為:7時階乘值為:5040
14、當i為:7時階乘值相加為:5913
15、當i為:8時階乘值為:40320
16、當i為:8時階乘值相加為:4623317、當i為:9時階乘值為:362880
18、當i為:9時階乘值相加為:40911319、當i為:10時階乘值為:362880020、當i為:10時階乘值相加為:4037913
2樓:
c++求n的階乘**如下:
#include
using namespace std;
int fac(int);
int main()
int n;
while(cin>>n)
cout int fac(int x) register int i,f=1; //定義暫存器變數for(i=1;i<=x;i++) f*=i; return f; 3樓:匿名使用者 int factorial(int n) while(carry)//如果有進位 }printf("結果是:\n%d ! = ",n);//顯示結果for(i = digit; i >=1; --i)return 0;} 4樓:磨曠方旭堯 這要看看printf這個函式是如何使用的 printf("1~20!階乘之和sum=%d\n",sum); 這個函式是輸出的意思 引號前面的都是直接輸出的意思,「1~20!階乘之和sum=」%d表示在這裡要輸出一個整數,整數的值在引號外面給出(這裡是後面的sum),\n表示輸出一個換行符,這樣在你輸出這一行之後相當於又輸出了個回車 5樓:王姝邱綺露 我就簡單寫個吧; intn=5; //比如求5的階乘 intresult=1; for(int i=1; i<=n; i++) //迴圈完成後,result就是結果 樓上用的是遞迴的方法。初入門的話,可能看起來有點難度。 呵呵,慢慢來吧,學c++,一定要回遞迴的。 6樓:匿名使用者 for (;;) console.writeline("的階乘值為", num, jc); console.writeline("你是否還需要使用此階乘計算器,1-是,2-否"); int numb = int.parse(console.readline()); if (numb == 1) if (numb == 2) }console.readkey(); 7樓:匿名使用者 #include using namespace std; int main() cout << n << " 的階乘為:"<< " = " << factorial; return 0;} 8樓:匿名使用者 #include using namespace std; long long f(long long n)else }int main() 用c++語言求n的階乘
10 9樓:很多很多 1、開啟vs6.0軟體,準抄備一個後襲綴為cpp的檔案,在c++檔案中首先寫入標頭檔案,定義一個處理階乘的函式,接著寫一個空的main函式: 2、接著是階乘recv函式邏輯,該函式有一個形參n用來接收輸入的數。n的階乘是所有正整數的乘積,這裡的處理是sum不斷的用遞迴的方法乘以recv函式的輸入數,每次相乘n的值都減1;主函式中用一個cin函式接受使用者輸入的數,之後呼叫recv處理階乘,最後則是輸出結果: 3、程式編寫完成,最後編譯執行,輸入任意一個數,最終會列印出計算的結果。以上就是用c++求階乘的方法: 10樓:匿名使用者 #include int result=1; void fac(int n) }void main() {int a; cout<<"請輸入所要求階乘的數:"<>a; fac(a); cout<以,我試過了 11樓: //以下 copy 為求bain的階 du乘的 zhi程式 dao#include using namespace std; int main() cout << result; return 0;} 12樓:匿名使用者 建立復遞迴函式法求 制一個正整數的階乘,我喜歡這個方法,簡單明瞭#include using namespace std; int f (int x) int main() 13樓:天空再亮 #include #define max 1000 using namespace std; int main() while(h>0) //如果h不為0p=j-1; //將當前的位數賦給p}for(i=p;i>=2;i--) cout<
}return 0;} 14樓:匿名使用者 #include using namespace std; int main() 15樓:龔煒林 請問樓主n有沒有啥範圍的? c語言,求n階乘的**? 16樓:糖糖小小個 思路:所謂n的階乘就是從1到n的累積,所以可以通過一個for迴圈,從1到n依次求積即可。 參考**: #include "stdio.h" int main() /*執行結果:(例如求5的階乘) 5120*/ 17樓:匿名使用者 for (;;) console.writeline("的階乘值為", num, jc); console.writeline("你是否還需要使用此階乘計算器,1-是,2-否"); int numb = int.parse(console.readline()); if (numb == 1) if (numb == 2) }console.readkey(); 18樓: #include int main() printf("n的階乘是%d\n", sum); return 0;} 19樓:ylf塵風 #include"stdio.h" void main() 20樓:窮圖末錄 function jiecheng(int i) 21樓:提防 int res=1; for(int i=1;i<=n;i++)res*=i; return res; 高寵 小霸王 include include stdio.h int input int min,int max void main j for i 2569 s i len if n m printf d n else printf a d d n,m if len 20 for i len 1 ... 用!表示階乘,不重置的話,計算出來的是1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 所以是34863。因為不重置,每次都在前一項的基礎上乘了一個i!但是我們只需要在前一項的基礎上乘以i就行了,所以多乘了。重置的話,雖然是正確的,但是多此一舉嘛,搞什麼二重迴圈?覺得cpu太快了麼?已經算... 問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...c語言程式設計n的階乘,C語言程式設計 N的階乘
程式設計求階乘的問題,vb程式設計求n的階乘
c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?