日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法题007 计算n的阶乘

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法题007 计算n的阶乘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

階乘的計算

階乘的定義

  n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1

?

?

簡單的程序代碼(可以算較小的階乘)

  沒有考慮變量表達范圍,假設所得結果用long型表示。

  這里需要注意的是0的階乘應該是1.

n較小的階乘算法 #include <iostream> using namespace std;int main(int argc, char* argv[]) {int n = 0;long result = 0;while( cin >> n){if(n > 0){result = n;while(n > 1){result *= (n-1);--n;}}else if (n == 0){result = 1;}cout << result << endl;}return 0; }

?

  這個程序的主要問題就是long的選取,long型是4個字節,32位,因為是帶符號的,能表示的范圍最大不超過2的31次方,即不超過10的10次方。

  即long型可以表示的數肯定是十進制下的10位數之內的。

  而14的階乘就已經是一個11位數了。

  (事實上13的階乘就已經超過了long的表示范圍,因為13的階乘的最高位是6,而2的31次方最高位是2。)

  所以這個程序只能計算12以下的數的階乘。

  考慮過將數據類型進一步改為long double,得到的結果是科學計數法顯示的,只有有限的有效數字,精度不高,并且當n進一步增大再次超過表示范圍的時候呢?所以還是需要另外的處理辦法。

?

?

大數階乘運算  

  當n大于等于20時,因為運算結果超出了long型的表示范圍,所以必須采取大數字的一般處理方法:用數組表示。

  程序如下,自己寫的,沒有仔細研究文后的參考資料。 

大數階乘運算 #include <iostream> using namespace std;int main(int argc, char* argv[]) {int n = 0;int number[21] = {0};int bitCount = 0;//記錄所用到的位數下標while( cin >> n){bitCount = 0;if(n > 0){//先把n用數組表示,0號元素為個位int copyOfN = n;for(int i = 0; copyOfN > 0; copyOfN/=10, ++i){number[i] = copyOfN % 10;bitCount = i;//cout << "number: " << number[i] << endl;//cout << "bitCount: "<<bitCount <<endl; }//然后進行階乘運算while( --n > 0){int carry = 0;for(int i = 0; i<= bitCount; ++i){int temp = number[i] * n + carry;number[i] = temp % 10;carry = temp / 10;}while(carry > 0){//如果有多余的進位,則說明數組需要添加位數//注意,這里由于把第二個乘數當做整體處理,而不是一位一位處理,所以進位可能也不只是一位number[++ bitCount] = carry % 10;carry /= 10;}}//最后輸出運算結果for(int i = bitCount; i >= 0; --i){cout << number[i];}cout << endl;}else if (n == 0){cout << 1 << endl;}else{cout << "負數沒有階乘!" << endl;}}return 0; }

?

  還是需要細心一些的。

  主要檢查循環變量是否更新,對于進位的理解是否正確等。

  結果用計算器驗證過,并且在九度上提交通過:http://ac.jobdu.com/problem.php?pid=1067

?

?

其他參考資料

  大數運算(采用數組模擬):

http://www.cnblogs.com/dolphin0520/archive/2011/07/16/2108006.html

http://www.cnblogs.com/yuzhaoxin/archive/2011/11/19/2205221.html

http://confach.cnblogs.com/archive/2005/07/14/192703.html

http://www.cnblogs.com/lsx54321/archive/2012/07/20/2601618.html

http://www.cnblogs.com/phinecos/archive/2009/10/06/1578411.html

?

轉載于:https://www.cnblogs.com/mengdd/archive/2013/03/15/2960684.html

總結

以上是生活随笔為你收集整理的算法题007 计算n的阶乘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美在线视频第一页 | 鲁鲁狠狠狠7777一区二区 | jizz国产| 精品国产伦一区二区三区免费 | 婷婷玖玖 | 中文字幕在线网址 | 日韩精品乱码久久久久久 | 亚洲一区二区三区高清视频 | 亚洲熟妇无码av在线播放 | wwwav在线播放 | 国产91片| √天堂中文官网8在线 | 欧美三级a做爰在线观看 | 亚洲成人午夜影院 | 午夜生活片 | 毛片在线观看网站 | 中文视频一区 | 波多野结衣绝顶大高潮 | 亚洲精品99| va在线 | 澳门久久| 97视频在线免费观看 | 久精品国产 | 日本少妇xxxx | 国产夫妻自拍av | 国产精品麻豆成人av电影艾秋 | 金瓶狂野欧美性猛交xxxx | 国产91高清 | av三级在线观看 | 国产激情a | 亚洲视频精品 | 久久婷婷成人综合色 | 日韩在线视频免费播放 | 大肉大捧一进一出好爽动态图 | a网址| 成人在线免费小视频 | 中国一极毛片 | 亚洲黄色在线免费观看 | 久草综合在线视频 | 国产91亚洲| 成人免费毛片视频 | 精品久久久久久久久久久久久久 | 国产又粗又猛又黄又爽无遮挡 | 欧美成人激情在线 | 亚洲免费视频播放 | 玖玖精品视频 | 日韩精品一区二区三区在线 | 最新超碰 | 日韩av免费在线看 | 五月天激情综合网 | 欧美一区二区三区四区视频 | 琪琪色影音先锋 | 一级特黄肉体裸片 | 中字幕视频在线永久在线观看免费 | 免费a在线观看播放 | 国产又大又黄又粗 | 97人妻精品一区二区三区 | 亚洲经典久久 | 毛片网站有哪些 | 少妇高潮一区二区三区69 | 无遮挡在线观看 | 波多野结衣中文字幕一区二区三区 | 国产精品电影一区 | 免费看毛片的网站 | 亚洲精品日韩在线 | 欧美日韩黄色片 | 91久久人澡人人添人人爽欧美 | 波多野结衣在线观看一区 | 国产精品99精品无码视亚 | 制服丝袜天堂网 | 亚洲人交配视频 | 国产丝袜在线播放 | 亚洲色图综合在线 | 久草综合网 | 蜜桃av乱码一区二区三区 | 久久有精品 | 四虎国产精品永久在线国在线 | 91精品免费 | 欧美视频成人 | 91人妻一区二区三区蜜臀 | 国产免费一区二区三区最新不卡 | 国产99久久久国产精品成人免费 | 涩涩精品 | 一区二区三区波多野结衣 | 奇米成人网 | 熟睡侵犯の奶水授乳在线 | av乱码| 天堂av中文字幕 | 日韩精品aaa | 三级全黄做爰龚玥菲在线 | 校园春色中文字幕 | 日韩精品第一区 | 蜜臀av88| 公侵犯人妻一区二区 | 国产成人av一区二区 | 日本久久视频 | 羞羞的软件 | 亚洲乱亚洲 | 国产精品高潮呻吟 |