假设我们计算一个2的10次方的数,用for循环要计算10次,现在就有种更简单的方法,计算次数更少。
比如一个X^25
现在我们可以这样理解,
X^25 = (X^12)^2 * X
X^12 = (X^6)^2
X^6 = (X^3)^2
X^3 = (X^1)^2 * X
X^1 = (X^0)^2 * X
这时发现这个只计算的4次比10次少了一半,有没有感觉发现新大陆
根据以上写的规律,可以发现,现有X^N,当N为奇数时,计算公式后面要再乘个X,当N为偶数时,就不需要了
然后当N为1的时候,直接返回X,N为0的时候,返回1;
这个时候就可以根据以上总结的规律写函数了
int function(int x, int n)
{
if(n == 0)
{
return 1;
}
if(n == 1)
{
return x;
}
if(n%2 == 0)
{
return function(x*x, n/2);
}
else
{
return function(x*x, n/2)*x;
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug() << function(2,10) << endl;
return a.exec();
}