當前位置:首頁 » 編程軟體 » 編程階乘問題

編程階乘問題

發布時間: 2023-05-12 01:04:04

編程階乘問題

說實話,沒有計算階乘的公式,也沒有簡便方法,只是硬算,也可以運用計算機,可以計算到65!,如果你想計算跟大的數,我建議你上網路尋找計算階乘的軟體,聽說多大的數都能計算出來。

還有這個參考:

由於階乘運沒清算的增長速度特別快(比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
{
static int a[] = new int [10000];
static void factorial(int n)
{
for(int i=2; i< a.length; i++)
a[i] = 0; //將數組元素初始化
a[0] = 1; //用數組的一項存放計算結果的位數
a[1] = 1; //將第一項賦值為一
for(int j= 2; j <= n; j++)
{
int i=1;
int c = 0; //c表示向高位的進位枯升前
for(; i <= a[0]; i++)
{
a[i] = a[i] * j + c;//將來自低位的計算結果和本位的結果相加
c = a[i] / 10;
a[i] = a[i] % 10;
}
for(; c != 0; i++)
{
a[i] = c%10;
c = c / 10;
}
a[0] = i - 1;
}
}
public static void main(String[] args)
{
String num = args[0];

int count = 0;
int n = Integer.parseInt(num);
f(n);
for(int i= a[0]; i>笑塌0; i--)
{

count++;
System.out.print(/*"a[" + i + "]=" + */a[i]/* + " "*/);
}
System.out.println("\n"+count);
}
}

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=528778

參考資料:http://blog.csdn.net/hengshan/archive/2005/11/13/528778.aspx

c語言編程 輸入N 求N的階乘

輸入一個正整數n,輸出n!*/#include <stdio.h> //編譯預處理命令

int factorial(int n); //函數聲明

int main(int argc, char const *argv[]) //主函數

{

int n; //變數定義

scanf("%d", &n); //輸入一個整數

printf("%d ", factorial(n)); //調用函數計算階乘

return 0;
}int factorial(int n) //定義計算n!的函數

{

int fact = 1;

for (int i = 1; i <= n; ++i)

{

fact = fact*i;

}

return fact;

}

拓展資料

特點

1. C語言是高級語言。它把高級語言的基本結構和語句與低級語言的實用性結合起來。C 語言可以像匯編語言一樣對位、位元組和地址進行操作,而這三者是計算機最基本的工作單元。

2.C語言是結構式語言。結構式語言的顯著特點是代碼及數據的分隔化,即程序的各個部分除了必要的信息交流外彼此獨立。這種結構化方式可使程序層次清晰,便於使用、維護以及調試。C 語言是以函數形式提供給用戶的,這些函數可方便的調用,並具有多種循環、條件語句控製程序流向,從而使程序完全結構化。

3.C語言功能齊全。具有各種各樣的數據類型,並引入了指針概念,可使程序效率更高。而且計算功能、邏輯判斷功能也比較強大。

4. C語言適用范圍大。適合於多種操作系統,如Windows、DOS、UNIX、LINUX等等;也適用於多種機型。C語言對編寫需要硬體進行操作的場合,明顯優於其它高級語言,有一些大型應用軟體也是用C語言編寫的。

⑶ 用c語言編程,求從1的階乘一直加到20的階乘。

1、首先打開C語言編輯器,新建一個c語言的文件,導入頭文件並設置一個主函數:

⑷ C語言中如何編程計算階乘

常見的有兩種:

遞歸版本:

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

還有一種是循環版:

intans=1;
for(inti=1;i<=n;i++)ans*=i;

測試方法:

#include<stdio.h>

intFac(intn){
if(n==0)return1;
returnn*Fac(n-1);
}

intmain(){
intn;
while(scanf("%d",&n)!=EOF){
intans=1;
for(inti=1;i<=n;i++)ans*=i;
printf("%d%d ",ans,Fac(n));
}
return0;
}

有個值得注意的地方:階乘時,數增大的很快,在n達到13時就會超過int的范圍,此時可以用long long或是 __int64來存儲更高精度的值,如果還想存儲更高位的,需要用數組來模擬大數相乘。

⑸ c++求編程n的階乘

首先,是main,不是mail。

其次,本程序中是使用的是遞歸函數來實現n的階乘,因為在具體的計算判攜源機上實現的時候,遞歸是由棧(一種數據的組織形式)來實現的,而棧的大小是受限於計隱侍算機的可用空間的。所以,在計算n的階乘時,當n較大,在計算時可能會出現空間不足不能進行計算的情況,這種情況下,會返回result的值為0.提醒程序的使用者,本次計算結果不對,請檢查程序或者輸入數據。

最後,如果上面掘態這段看不懂也沒有關系,你可以輸入一個足夠大的數來測試一下,當result初值是否為0對程序有什麼影響。只有你自己試了,才能真正的掌握它。

⑹ 求一道C語言編程題:求n的階乘

思路:所謂n的階乘就是從1到n的累積,所以可以通過一個for循環,從1到n依次求積即可。
參考代碼:
#include "stdio.h"
int main() {
int n,i,s=1;
scanf("%d",&n);
for(i=1;i<=n;i++)//for循環求累積
s=s*i;
printf("%d\n",s);
return 0;
}
/*
運行結果:(例如求5的階乘)
5
120
*/

⑺ C語言編程 N的階乘

#include<stdio.h>

int main()

{

int n,i,f=1;

printf("請輸入一個整數:");

scanf("%d",&n);

for(i=2;i<=n;i++)

f*=i;

printf("%d!=%d ",n,f);

getch();

return 0;

}

⑻ 編程求階乘的問題

在這段代碼中,外層循環的目的是依次枚舉從1到5一共5個數字,存入變數j;內層循環的作用是求j的階乘,結果保存為變數a,然後把a累加到變數n。
求階乘需要從1開始,沿自然數列依次向上乘,結果累乘到變數a,所以每次內層循環開始時變數a必須被重置成1,否則求下一個數字的階乘時就不是從1開始計算了。
希望LZ能明白。

⑼ c語言如何求N的階乘

法/步驟

第一步、編程的第一步就是寫頭文件,對於初學者來說,只寫一個頭文件就可以了,即#include<stdio.h>

拓展資料

定義

n!=1×2×3...xn

n!=X×(X-1)×(X-2)...×1

1751年,歐拉以大寫字母M表示m階乘M=1x2x3...x...m

1799年,魯非尼在他出版的方程論著述中,則以小寫字母π表示m階乘。而在1813年,高斯則以Π(n)來表示n階乘。而用來表示n階乘的方法起源於英國,但仍未能確定始創人是誰。直至1827年,由於雅萊特的建議而得到流行,現在有時也會以這個符號作為階乘符號。

當n較大時,直接計算n!變得不可能,這時可通過斯特靈(Stirling)公式計算近似算或取得大小范圍。

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:535
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:32
linux485 發布:2025-07-05 14:38:28 瀏覽:310
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:760
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:437
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:734
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:249
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:696
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:288
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:838