摘要:學(xué)堂碼匠求某個(gè)數(shù)字的階乘,很難嗎看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請(qǐng)移步微信小程序決勝前端
面試真題題目</>復(fù)制代碼
HTML5學(xué)堂-碼匠:求某個(gè)數(shù)字的階乘,很難嗎?看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。
如何求“大數(shù)”的階乘(如1000的階乘、2000的階乘)
什么是階乘一個(gè)正整數(shù)的階乘(英語(yǔ):factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。
5的階乘 5! 等價(jià)于
54321
在大多數(shù)瀏覽器當(dāng)中:
● 最小數(shù)字是5e-324;(可以理解為浮點(diǎn)后324位)
● 最大數(shù)字是1.7976931348623157e+308;(可以理解為309位)
對(duì)于超過此范圍的數(shù)字,會(huì)顯示為Infinity或 -Infinity(正無(wú)窮、負(fù)無(wú)窮)。
</>復(fù)制代碼
function fact(maxNum) {
if (maxNum > 1) {
return maxNum * fact(maxNum - 1);
} else {
return 1;
}
}
var result = fact(170);
console.log(result);
</>復(fù)制代碼
運(yùn)行結(jié)果:
7.257415615307994e+306
對(duì)于170!以下的階乘,是可以使用遞歸實(shí)現(xiàn)的,對(duì)于大于170的數(shù)字,階乘數(shù)已超出范圍,會(huì)顯示為Infinity。
大數(shù)階乘如何實(shí)現(xiàn) 實(shí)現(xiàn)思路將一個(gè)數(shù)字的每一位(個(gè)位、十位、百位、千位……)拆分出來(lái),構(gòu)成一個(gè)數(shù)組。
每次計(jì)算時(shí),針對(duì)每一位進(jìn)行數(shù)學(xué)運(yùn)算,并遵循逢十進(jìn)一的原則,修改數(shù)組中每一個(gè)數(shù)組元素的內(nèi)容。
在完成所有運(yùn)算之后,可以通過數(shù)組的join方法,將每一位連接起來(lái),組成“字符串”輸出~
</>復(fù)制代碼
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! 的運(yùn)算結(jié)果
部分代碼說明
將當(dāng)前被乘數(shù)拆分為數(shù)組,每位的位數(shù)分別進(jìn)行乘法運(yùn)算。
當(dāng)count大于10時(shí),進(jìn)位,再讓下一位數(shù)字與之計(jì)算。此時(shí),需要有一個(gè)變量(plus)存儲(chǔ)前一位得到的余數(shù)。
對(duì)于位數(shù)發(fā)生變化時(shí)(如結(jié)果從兩位數(shù)在計(jì)算之后變化為三位數(shù)),當(dāng)前的result長(zhǎng)度不能滿足,所以需要為for循環(huán)增加額外的判斷條件。
更多面試真題,請(qǐng)移步微信小程序 —— 決勝前端
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/84894.html
摘要:學(xué)堂碼匠求某個(gè)數(shù)字的階乘,很難嗎看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請(qǐng)移步微信小程序決勝前端 HTML5學(xué)堂-碼匠:求某個(gè)數(shù)字的階乘,很難嗎?看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。 面試真題題目 如何求大數(shù)的階乘(如1000的階乘、2000的階乘) showImg(htt...
摘要:學(xué)堂碼匠求某個(gè)數(shù)字的階乘,很難嗎看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。更多前端開發(fā)面試真題更多面試真題,請(qǐng)移步微信小程序決勝前端 HTML5學(xué)堂-碼匠:求某個(gè)數(shù)字的階乘,很難嗎?看上去這道題異常簡(jiǎn)單,卻不曾想里面暗藏殺機(jī),讓不少前端面試的英雄好漢折戟沉沙。 面試真題題目 如何求大數(shù)的階乘(如1000的階乘、2000的階乘) showImg(htt...
摘要:線程安全嗎雖然天天用,但是真的沒考慮過這個(gè)問題。其實(shí),線程不安全。沒有對(duì)多線程問題進(jìn)行處理,舉個(gè)方法的例子就能證明它線程不安全。線程不安全的要比線程安全的執(zhí)行效率高。 引言 最近學(xué)校的氛圍比較活躍,考研的復(fù)習(xí),不考研的都在寫簡(jiǎn)歷準(zhǔn)備面試。 看了看,最近也沒有好公司來(lái)辦宣講會(huì),也就沒了投簡(jiǎn)歷的意向。最近看了看面試題,想著補(bǔ)一補(bǔ)基礎(chǔ),以后面幾家Spring Cloud的企業(yè),去和面試官交流...
摘要:但是,從字體上來(lái)說雪碧圖制作,使用以及相關(guān),圖文。由于采用了編譯,所以能夠保證在瀏覽器不支持標(biāo)準(zhǔn)布局的情況下,回滾到舊版本的,保證移動(dòng)設(shè)備中能呈現(xiàn)出一樣的布局效果。我不想陷入和的紛爭(zhēng),但是有一件事是確定的極大的提升了移動(dòng)端 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個(gè)問題:怎樣通過 CSS 簡(jiǎn)單而優(yōu)雅的實(shí)現(xiàn)水平、垂直同時(shí)居中。記得剛開始學(xué)習(xí) CSS 的時(shí)候,看到 ...
閱讀 525·2023-04-26 00:33
閱讀 3549·2021-11-24 09:39
閱讀 2955·2021-09-22 15:34
閱讀 2326·2019-08-23 18:07
閱讀 2921·2019-08-23 18:04
閱讀 3710·2019-08-23 16:06
閱讀 2902·2019-08-23 15:27
閱讀 1621·2019-08-23 14:32