当前位置: 首页 > Web前端 > HTML5

2000!-看似这么简单的一道面试题,却让太多“前端”大侠都失败了

时间:2023-04-05 15:45:03 HTML5

HTML5学堂-Coder:求某个数的阶乘很难吗?看似这道题很简单,却不曾想这其中暗藏杀机,让不少前端面试大侠掉入沙场。面试题如何求“大数”的阶乘(比如1000的阶乘,2000的阶乘)什么是正整数的阶乘(英文:factorial)是小于等于所有正整数的乘积数,0的阶乘为1。5的阶乘5!相当于54321。大多数浏览器的数字范围是:●最小数字是5e-324;(可以理解为浮点数后324位)●最大数为1.7976931348623157e+308;(可以理解为309位)超过这个范围的数,会显示为Infinity或者-Infinity(正无穷大,负无穷大)。阶乘函数fact(maxNum)的递归实现{if(maxNum>1){returnmaxNum*fact(maxNum-1);}else{返回1;}}var结果=事实(170);控制台日志(结果);运行结果:7.257415615307994e+306对于170以下的阶乘!,可以使用递归。对于大于170的数字,阶乘数超出范围,将显示为Infinity。如何实现大数的阶乘实现思路是将一个数的每一位(个位、十位、百位、千位……)拆分成一个数组。每次计算,对每一位进行数学运算,按照每一位小数的原则修改数组中每个数组元素的内容。完成所有操作后,就可以使用数组的join方法,将每一位连接起来,形成一个“串”输出~核心函数functionvarresult=[1];var最大值=300;for(varnum=2;num<=maxNum;num++){for(vari=0,plus=0;i