迭代对数幂

2024-02-07

我最近搞砸了一次采访(使用 collabedit 的电话屏幕)。 这是问题: 编写一个交互式 O(lg n) 算法来求 x^y 的幂(x 是双精度型,y>0 是整数)。

我首先进行了递归分而治之,并尝试将其转换为迭代......但我不能:S 有没有一种方法可以将递归转换为迭代(尾递归很容易,但是具有两个可能的递归调用的递归函数怎么样,这取决于条件来决定将调用哪个调用)?


The typical way to unroll this uses the bitwise representation of b. Compute a1, a2, a4, a8, etc. and at each step determine whether or not to multiply it into the total. This is shown here:

double result = 1;
double multiplier = a;
for (double multiplier = a; b != 0; multiplier *= multiplier, b /= 2) {
    if (b % 2 == 1) {
       result *= multiplier;
    }
}

For example, to compute 35, we'd notice that 5 has binary representation 101, so we'd multiply in 31 and 34.

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迭代对数幂 的相关文章

随机推荐

  • UITableView 不重用单元格,这样做的好例子吗?

    我的 UITableView 有 5 个单元格 每个都有一个 UITextField 作为子视图 用户将在其中输入数据 如果我确实使用单元格重用 则当单元格滚动到视图之外时 文本字段将被清除 我不想处理这个问题 有没有办法不重复使用单元格
  • 如何编辑引导程序导航栏的样式?

    我正在尝试编辑引导导航栏的样式 但是 例如 我无法编辑颜色和删除边框 我想将颜色更改为白色 并将边框颜色更改为白色 并且我已包含以下代码 谁能告诉我我做错了什么 navbar default background color ffffff
  • 更改单元格中某些字符的颜色

    我在单元格 A1 中有一句话 我想要其中 50 个 我想将任何数字字符设置为红色文本 只是数字字符 我该怎么做呢 这是我所拥有的框架 Sub RedText Dim i As Integer For i 1 To Len Cells 1 1
  • webpack.config.js 不断将bundle.js 的脚本标记添加到我的index.html 中

    我有如下的 webpack config js var path require path var webpack require webpack var HtmlWebpackPlugin require html webpack plu
  • Angular,如何从字符串解析模板并传递当前上下文变量

    我制作了一个简单的组件来创建表 Component selector admin table template table class table table bordered thead th column label th thead
  • 如何在 if 语句中使用 grep?

    我有以下命令可以给出正确的结果 grep include java Ri System loadLibrary 但是 如果我将它放在 if 条件中 无论字符串是否存在 它总是返回相同的 0 结果 if grep include java R
  • 如何取消引用已传递给子例程的 Perl 哈希引用?

    我仍在尝试解决我的哈希取消引用问题 我当前的问题是我现在将 hashref 传递给子组件 并且我想在该子组件中取消引用它 但我没有找到正确的方法 语法来做到这一点 在 sub 中 我想迭代哈希键 但 hashref 的语法与哈希不同 我知道
  • Java:需要从字节数组创建 PDF

    我从 DB2 表中得到了 blob 我正在将其转换为字节数组 以便我可以使用它 我需要获取字节数组并创建一个PDF出来了 这就是我所拥有的 static void byteArrayToFile byte bArray try Create
  • 哪些列表可以作为临时列表?

    当处理项目列表时 列表仅充当暂时的容器 您建议我使用哪些列表类型 I 不想手动销毁列表 想要使用built in列表类型 无框架 库 想要仿制药 可以在不导致泄漏的情况下实现这一点的东西 function GetListWithItems
  • 使用ionic安装和卸载cordova应用程序时执行脚本

    我使用 cordova 已经有好几年了 使用 ionic 的时间还不到一年 我正在寻找在安装应用程序和卸载应用程序时运行 JavaScript 函数的方法 我做了很多搜索 但没有找到任何相关内容 有人有一个想法 至少有一个近似值可以作为起点
  • 让menhir将用户定义的函数从.mly添加到.mli

    Menhir 允许将任意 ocaml 代码添加到 mly 文件的末尾 我想在其中声明一些函数 但我找不到一种方法让 menhir 将我的函数添加到 mli 文件中 以便它们从其他模块中可见 是否可以 答案很简单 那就是no 中定义的代码 m
  • 解决导航属性 Dynamics WebAPI 深度插入时出现的错误

    我正在使用微软动态Web API https msdn microsoft com en us library mt607689 aspx将数据写入 Microsoft Dynamics 365 中的实体 当我尝试执行深插入 https m
  • 用于 Angular.js 依赖注入管理的 Grunt.js

    我正在使用 Grunt 自动构建我的网络应用程序 我遇到了一个有趣的问题 我有两个选择 1 grunt dev and 2 grunt build grunt dev只执行与开发相关的基本任务 我的 主要 Angular 模块如下所示 va
  • Py_None 的值

    我很清楚None用于表示缺乏价值 但由于在实现过程中一切都必须有一个潜在的价值 所以我想看看使用了什么值来表示没有值 关于CPython 我理解 基于文档 https docs python org 3 c api none html c
  • 无法使用 $http angularjs 获取结果数据

    我尝试使用 http 但为什么它返回 null 结果 angular module myApp factory sender function http var newData null http get test html success
  • 为泛型接口配置装饰器,并在简单注入器中将所有实例注入到具有非泛型接口参数的构造函数

    我一直在使用与所描述的非常相似的模式在这篇优秀的文章中 http www cuttingedge it blogs steven pivot entry php id 91将命令和查询作为对象 我还使用 SimpleInjector 作为
  • 当应用程序关闭并重新打开时 Android 崩溃

    我有一个非常简单的 Android 应用程序 只显示一个空白的白色屏幕 当我按 主页 按钮关闭应用程序 然后尝试再次打开该应用程序时 它崩溃了 并且我收到 强制关闭 按钮 在 Eclipse 中 我收到此错误 ActivityManager
  • 正则表达式匹配顺序

    我的问题很简单 假设我想匹配单词中的元音 但我想按照出现的特定顺序来匹配它们 例如 a e i o u 我该怎么做呢 所以你正在寻找a后面跟着一些字符 然后e后面跟着一些字符 等等 换句话说 a接下来是不是的东西e then e 然后是那些
  • 从 git 存储库中删除丢失的 LFS 对象

    我的 git 存储库 中缺少一堆 LFS 对象 无论是在客户端还是在服务器上 我知道那些物品丢失了 没关系 不幸的是这意味着git lfs fetch all甚至git lfs push all origin将失败 我想从存储库中清除 损坏
  • 迭代对数幂

    我最近搞砸了一次采访 使用 collabedit 的电话屏幕 这是问题 编写一个交互式 O lg n 算法来求 x y 的幂 x 是双精度型 y gt 0 是整数 我首先进行了递归分而治之 并尝试将其转换为迭代 但我不能 S 有没有一种方法