方法1:直接求解,但是要注意特殊情况的处理:即当指数为负,且底数为0的情况。

#include<iostream>
using namespace std; template<typename T>
T myPow(T a, int m){
double base = 1;
int flag = (m < 0) ? -1 : 1;
int n = (m < 0) ? -m : m; while(n > 0){
base = base * a;
n --;
}
if(flag == -1){
if(a != 0){
return (1/base);
}
cout<<"当指数为负时,0不能作为底数!"<<endl;
exit(-1);
}
return base;
}
int main(){ double a = 0;
// int a = 2;
int n = 10;
cout<<"求"<<a<<"的"<<n<<"次方为:"<<myPow(a, n)<<endl;
system("pause");
return 0;
}

方法2:可以归纳出下面的公式进行求解,使得循环次数大幅减小。也要注意特殊情况的处理:即当指数为负,且底数为0的情况。 

    an/2*an/2    n为偶数

a=

     a(n-1)/2*a(n-1)/2*a    n为奇数

#include<iostream>
using namespace std; // 符号处理(符号处理放在递归方法中出现问题,所以拿了出来)
template<typename T>
double myPow1(T a, int m){
int flag = (m < 0) ? -1 : 1;
int n = (m < 0) ? -m : m;
double result = myPow2(a, n, flag);
cout<<result<<endl;
if(flag == -1){
if(a != 0){
return (1/result);
}
cout<<"当指数为负时,0不能作为底数!"<<endl;
exit(-1);
}
return result;
}
template<typename T>
T myPow2(T a, int n, int flag){
double result; if(n == 0){
return 0;
}
if(n == 1){
return a;
}
if(n%2 == 0){
result = myPow2(a, n/2, flag) * myPow2(a, n/2, flag);
}else{
result = myPow2(a, (n-1)/2, flag) * myPow2(a, (n-1)/2, flag) * myPow2(a, 1, flag);
}
return result;
} int main(){ double a = 0;
// int a = 2;
// int n = 8;
int n = -10;
cout<<"求"<<a<<"的"<<n<<"次方为:"<<myPow1(a, n)<<endl;
system("pause");
return 0;
}

  

【校招面试 之 剑指offer】第16题 数值的整数次方的更多相关文章

  1. 剑指Offer - 九度1514 - 数值的整数次方

    剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...

  2. 剑指Offer:面试题11——数值的整数次方(java实现)

    题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...

  3. 剑指offer(12)数值的整数次方

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目分析 这道题用传统的方法也可以做,只不过效率太低,这里我们用到快速幂的方法 ...

  4. 剑指offer十二之数值的整数次方

    一.题目 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.思路 1.传统方法计算,时间复杂度O(n) 2.递归方式计算,时间复杂度O ...

  5. 【剑指Offer】12、数值的整数次方

      题目描述:   给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方.   解题思路:   本题看似比较简单,是一个简单的指数运算,但需要完 ...

  6. 【Offer】[16] 【数值的整数次方】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数 ...

  7. 【校招面试 之 剑指offer】第18题 删除链表中的节点

    题目一:在O(1)时间内删除链表节点. 给定单项链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 思路:(1)如果要删除的节点不是链表的尾节点,则将被删除节点的内容复制到该节点,然 ...

  8. 【校招面试 之 剑指offer】第11题 旋转数组中的最小数字

    题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如: 数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...

  9. 【校招面试 之 剑指offer】第10-3题 矩阵覆盖问题

    题目:我们可以使用2✖️1的小矩形横着或者竖着去覆盖更大的矩形.请问用8个2✖️1的小矩形无重叠地覆盖一个2✖️8的大矩形,共有多少种方法? 分析:当放第一块时(假定从左边开始)可以横着放,也可以竖着 ...

随机推荐

  1. 牛逼的lsof命令!!!

    linux lsof命令详解 简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访 ...

  2. tp5的RBAC插件及其使用很方便的管理用户登录及操作权限

    tp5-rbac 本扩展包是tp5的rbac包,使用了部分tp5的特性实现了关系型数据库中特殊数据结构的处理. 安装方法 先安装composer如果不知道怎么安装使用composer请自行百度. 打开 ...

  3. mac osx下虚拟主机配置

    1.打开“终端(terminal)”,输入 sudo apachectl -v,此指令显示apache版本             2.开启apache,输入 sudo apachectl start ...

  4. Spark分析之MemoryStore

    private case class MemoryEntry(value: Any, size: Long, deserialized: Boolean) class MemoryStore(bloc ...

  5. Python模块之shelve

    shelve是python的自带model. 可以直接通过import shelve来引用. shelve类似于一个存储持久化对象的持久化字典,即字典文件. 使用方法也类似于字典. 保存对象至shel ...

  6. 编译器错误消息: CS0016: 未能写入输出文件“c:/Windows/Microsoft.NET/Framework/v4.0.50727/Temporary ASP.NET Files/root .... 拒绝访问。

    此问题困扰良久,得终极解决方案 环境:windows 2008 server r2 + iis7 + .net framework4.5 解决:1. 错误信息中包含的目录“c:/Windows/Mic ...

  7. 对 Spring 的核心(AOP 和 IOC)的理解(大白话)

    Spring 首先它是一个开源而轻量级的框架.其核心容器的主要组件是Bean工厂(BeanFactory).Bean工厂使用控制反转(IOC)模式来降低程序代码之间的耦合度,并提供了面向切面编程(AO ...

  8. fs和http模块

    fs模块写入文件的方式 导入内置模块     const fs=require("fs")   一.异步写入方式     fs.writeFile("写入文件的路径&qu ...

  9. django 更新 模板语言

    Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言中按此语法使用:{{ 变量名 ...

  10. HAproxy目录分发

    ServerA服务的数据查询接口:/api/v1/datas HAproxy地址10.66.222.333将ServerA添加转发规则添加到HAproxyhaproxy.cfg frontend ht ...