基于visual Studio2013解决面试题之0710求方优化

来源:互联网 发布:js手机重力感应 编辑:程序博客网 时间:2024/06/11 04:17



题目



解决代码及点评

/*    假设我们求 2^32,指数是 32,那么我们需要进行 32 次循环的乘法。但是我们在求出 2^16    以后,只需要在它的基础上再平方一次就可以求出结果。同理可以继续分解 2^16。也就是    a^n=a^(n/2)*a^(n/2),(n 为偶数);或者 a^n=a^((n-1)/2)*a^((n-1)/2)*a,(n 为奇数)。这样就将    问题的规模大大缩小,从原来的时间复杂度 O(n)降到现在的时间复杂度 O(logn)。可以用递    归实现这个思路.*/#include <iostream>using namespace std;/*优化的Power函数*/double MyPower(double base, unsigned int absExp){    if (absExp == 0)    {        return 1;    }    if (absExp == 1)    {        return base;    }    double dblResult = 1.0 * base;int i;// 对2的n次方部分快速进行    for (i = 2; i <= absExp; i*=2)    {        dblResult *= dblResult;    }// 剩余的部分再一个个乘法for (int j = 0; j < absExp - i/2; j++){dblResult *= base;}    return dblResult;}int main(){    cout<<MyPower(2,7)<<endl;    system("pause");    return 0;}


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6704519

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果








0 0
原创粉丝点击