首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript返回无穷大(快速能力)

javascript返回无穷大(快速能力)
EN

Stack Overflow用户
提问于 2013-09-19 13:32:03
回答 2查看 445关注 0票数 0
代码语言:javascript
复制
function pow(n,to){
  if(to == 0 ) return 1;  
  h = pow(n,to/2);
  return h*h* ((to % 2) == 0 ? 1 : n);  
}

为什么这段代码会返回不同于0的无穷大值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-19 13:41:55

函数中的递归永远不会停止。这是因为当to / 2大于0时,它永远不会是0。在调用初始值为10时,要在递归过程中使用这些值:

10 -> 5 -> 2.5 -> 1.25 -> 0.625.

您可以使用Math.floor()在小数点之后切断浮点数的部分。这是您希望它成为的函数:

代码语言:javascript
复制
function pow(n, to) {
  if (to == 0) {
    return 1;
  }

  var h = pow(n, Math.floor(to / 2));
  return h * h * ((to % 2) == 0 ? 1 : n);
}
票数 0
EN

Stack Overflow用户

发布于 2013-09-19 13:37:12

你有无限递归。这意味着您的函数正在调用自己,并且没有条件阻止它这样做。所以在javascript引擎停止之前,它会永远调用自己。将控制台日志放入您的函数,并在控制台中查看它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18896072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档