求階乘沒必要弄這么復(fù)雜,你非要用遞歸算法求階乘也行,問題出在輸入負(fù)數(shù)時(shí),要有c語言終止程序的代碼。

桂林網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
這段代碼就是:exit(-1);?
修改源程序
得到正確結(jié)果
在整數(shù)表示范圍內(nèi)得到正確結(jié)果
不過源程序還是有問題,如果階乘的最終結(jié)果數(shù)值非常大時(shí),超出int的表示范圍,就會(huì)出錯(cuò)。
超出整數(shù)表示范圍得到錯(cuò)誤結(jié)果
這就需要修改數(shù)據(jù)類型int為double,這里給出更簡單的代碼:
得到正確的運(yùn)行結(jié)果:
修改數(shù)據(jù)類型可得到正確的結(jié)果
可能是超出了整數(shù)所能表達(dá)的范圍。因?yàn)橥ǔU麛?shù)的范圍是-32768~32767。建議你把n和乘積的變量定義成長整型或者浮點(diǎn)型即可。
long double 改為 double,
%d 改為?%lf
#include?stdio.h
int?main()
{
double?s?=?0,?t?=?1,?n;
for?(n?=?1;?n?=?20;?n++)
{
t?*=?n;
s?+=?t;
}
printf("1!+2!+3!+...+20!?=?%.0lf\n",s);
return?0;
}
//?輸出:1!+2!+3!+...+20!?=?2561327494111820288
另外,你的程序求的是 19!。
你計(jì)算100!呀,int存不下的,這個(gè)結(jié)果太大了,溢出了,所以可能會(huì)出現(xiàn)結(jié)果為負(fù)數(shù),哪怕不是負(fù)數(shù)結(jié)果也不是正確的。
20的階乘是一個(gè)很大很大的數(shù),你定義一個(gè)int型變量是不夠的,溢出了,用浮點(diǎn)型吧.
當(dāng)前題目:c語言階乘函數(shù)輸出負(fù)值,c語言負(fù)數(shù)
標(biāo)題路徑:http://www.jbt999.com/article12/hdcogc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、營銷型網(wǎng)站建設(shè)、云服務(wù)器、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)