用 C++ 编写一个 O(Log y) 迭代 pow(x, y) 函数
在此问题中,我们获得两个整数 x 和 y。我们的任务是创建一个函数,其将通过迭代方法与 pow(x,y) 等效,该方法将在时间复杂度为 0(Log y) 的情况下完成任务。
我们举几个例子来理解该问题,
输入
x = 7 , y = 3
输出
343
pow(x,y) 的迭代函数将迭代并更新 y 的奇数值的结果,将其乘以 x,并在每次迭代时将 x 更新为 x2。
显示解决方案实现的程序
示例
#include <iostream> using namespace std; void calcPower(int x, unsigned int y) { int result = 1; while (y > 0) { if (y & 1) result *= x; y = y >> 1; x = x * x; } cout<<result; } int main() { int x = 7; unsigned int y = 3; cout<<x<<" raised to "<<y<<" is "; calcPower(x,y); return 0; }
输出
raised to 3 is 343
广告