在这个问题上,我们给了两个整数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