首页 > 其他 > 详细

【CodeWars】Large Factorials (计算阶乘)

时间:2020-10-10 12:20:08      阅读:66      评论:0      收藏:0      [点我收藏+]

JS数据位数限制:https://www.cnblogs.com/wangmeijian/p/9217352.html
使用数组实现阶乘运算的过程:https://www.cnblogs.com/hiluna/p/8868175.html

JavaScript中的基本数据类Number是双精度浮点数,它可以表示的最大安全范围是正负9007199254740991,也就是2的53次方减一

CodeWars里的要求是不用JS提供的bigInt等数据类型,也不能使用其他插件

答案:

function factorial(n){
  if(n<0){return null;}
  if(n==0 ||n==1){return "1";}
  let arr=[1];
  let temp=0; 
  for(let i=2; i<=n; i++){                                //取出2~n之间的数字
    for(let j=0,prior=0; j<arr.length ||prior!=0; j++){   //从个位数arr[0]开始相乘(有的时候进位的数字要放入arr[length+1],要增加一个判断条件prior!=0)
      temp = (j<arr.length)? arr[j]*i+prior : prior;      //temp存储相乘结果(记得加上prior)
      arr[j] = temp%10;                                   //更新当前位arr[j]
      prior= (temp-arr[j])/10;                            //算出进位
    }
  }
  return arr.reverse().join("");
}

【CodeWars】Large Factorials (计算阶乘)

原文:https://www.cnblogs.com/hikki-station/p/13791448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!