摘要:學堂碼匠求某個數(shù)字的階乘,很難嗎看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請移步微信小程序決勝前端
面試真題題目HTML5學堂-碼匠:求某個數(shù)字的階乘,很難嗎?看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。
如何求“大數(shù)”的階乘(如1000的階乘、2000的階乘)
什么是階乘一個正整數(shù)的階乘(英語:factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。
5的階乘 5! 等價于
54321
在大多數(shù)瀏覽器當中:
● 最小數(shù)字是5e-324;(可以理解為浮點后324位)
● 最大數(shù)字是1.7976931348623157e+308;(可以理解為309位)
對于超過此范圍的數(shù)字,會顯示為Infinity或 -Infinity(正無窮、負無窮)。
function fact(maxNum) { if (maxNum > 1) { return maxNum * fact(maxNum - 1); } else { return 1; } } var result = fact(170); console.log(result);
運行結(jié)果:
7.257415615307994e+306
對于170!以下的階乘,是可以使用遞歸實現(xiàn)的,對于大于170的數(shù)字,階乘數(shù)已超出范圍,會顯示為Infinity。
大數(shù)階乘如何實現(xiàn) 實現(xiàn)思路將一個數(shù)字的每一位(個位、十位、百位、千位……)拆分出來,構(gòu)成一個數(shù)組。
每次計算時,針對每一位進行數(shù)學運算,并遵循逢十進一的原則,修改數(shù)組中每一個數(shù)組元素的內(nèi)容。
在完成所有運算之后,可以通過數(shù)組的join方法,將每一位連接起來,組成“字符串”輸出~
var result = [1]; var maxNum = 300; for (var num = 2; num <= maxNum; num++) { for (var i = 0, plus = 0; i < result.length || plus != 0; i++) { var count = (i < result.length) ? (num * result[i] + plus) : plus; result[i] = count % 10; plus = (count - result[i]) / 10; }; }; console.log(result.reverse().join(""));300! 的運算結(jié)果 部分代碼說明
將當前被乘數(shù)拆分為數(shù)組,每位的位數(shù)分別進行乘法運算。
當count大于10時,進位,再讓下一位數(shù)字與之計算。此時,需要有一個變量(plus)存儲前一位得到的余數(shù)。
對于位數(shù)發(fā)生變化時(如結(jié)果從兩位數(shù)在計算之后變化為三位數(shù)),當前的result長度不能滿足,所以需要為for循環(huán)增加額外的判斷條件。
更多面試真題,請移步微信小程序 —— 決勝前端
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/112455.html
摘要:學堂碼匠求某個數(shù)字的階乘,很難嗎看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請移步微信小程序決勝前端 HTML5學堂-碼匠:求某個數(shù)字的階乘,很難嗎?看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。 面試真題題目 如何求大數(shù)的階乘(如1000的階乘、2000的階乘) showImg(htt...
摘要:學堂碼匠求某個數(shù)字的階乘,很難嗎看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請移步微信小程序決勝前端 HTML5學堂-碼匠:求某個數(shù)字的階乘,很難嗎?看上去這道題異常簡單,卻不曾想里面暗藏殺機,讓不少前端面試的英雄好漢折戟沉沙。 面試真題題目 如何求大數(shù)的階乘(如1000的階乘、2000的階乘) showImg(htt...
摘要:線程安全嗎雖然天天用,但是真的沒考慮過這個問題。其實,線程不安全。沒有對多線程問題進行處理,舉個方法的例子就能證明它線程不安全。線程不安全的要比線程安全的執(zhí)行效率高。 引言 最近學校的氛圍比較活躍,考研的復習,不考研的都在寫簡歷準備面試。 看了看,最近也沒有好公司來辦宣講會,也就沒了投簡歷的意向。最近看了看面試題,想著補一補基礎,以后面幾家Spring Cloud的企業(yè),去和面試官交流...
閱讀 2424·2021-11-23 10:04
閱讀 1494·2021-09-02 15:21
閱讀 892·2019-08-30 15:44
閱讀 1061·2019-08-30 10:48
閱讀 707·2019-08-29 17:21
閱讀 3554·2019-08-29 13:13
閱讀 1983·2019-08-23 17:17
閱讀 1784·2019-08-23 17:04