本文实例演示了C语言求幂计算的高效解法。很有实用价值。分享给大家供大家参考。具体方法如下:

题目如下:

给定base,求base的幂exp

只考虑基本功能,不做任何边界条件的判定,可以得到如下代码:

#include

using namespace std;

int cacExp(int base, int exp)

{

int result = 1;

int theBase = 1;

while (exp)

{

if (exp & 0x01)

result = result * base;

base = base * base;

exp = exp >> 1;

}

return result;

}

int getRecurExp(int base, int exp)

{

if (exp == 0)

{

return 1;

}

if (exp == 1)

{

return base;

}

int result = getRecurExp(base, exp >> 1);

result *= result;

if (exp & 0x01)

result *= base;

return result;

}

int main()

{

for (int i = 1; i < 10; i++)

{

int result = cacExp(2, i);

//int result = getRecurExp(2, i);

cout << "result: " << result << endl;

}

return 0;

}

再来看看数值的整数次方求解方法:

#include

using namespace std;

bool equalZero(double number)

{

if (number < 0.000001 && number > -0.000001)

return true;

else

return false;

}

double _myPow(double base, int exp)

{

if (exp == 0)

return 1;

if (exp == 1)

return base;

double result = _myPow(base, exp >> 1);

result *= result;

if (exp & 0x01)

result *= base;

return result;

}

double _myPow2(double base, int exp)

{

if (exp == 0)

return 1;

double result = 1;

while (exp)

{

if (exp & 0x01)

result *= base;

base *= base;

exp = exp >> 1;

}

return result;

}

double myPow(double base, int exp)

{

if (equalZero(base))

return 0;

if (exp == 0)

return 1;

bool flag = false;

if (exp < 0)

{

flag = true;

exp = -exp;

}

double result = _myPow2(base, exp);

if (flag)

{

result = 1 / result;

}

return result;

}

void main()

{

double base = 2.0;

int exp = -5;

double result = myPow(base, exp);

cout << "result: " << result << endl;

}

相信本文所述对大家C程序算法设计的学习有一定的借鉴价值。

c语言求幂 编程,C语言求幂计算的高效解法相关推荐

  1. c语言 源程序代码,编程(C语言源程序代码)

    编程(C语言源程序代码) 已知 S=1+1/(1+2)+1/(1+2+3)+-+1/(1+2+3+-+N) ,当N的值为50时,求S的值. 要求:按四舍五入的方式精确到小数点后第四位. #includ ...

  2. jdy40程序C语言,lr脚本编程C语言.docx

    lr脚本编程C语言.docx 1.define COUNT 100define SALARY 4000Actionint total;totalCOUNT*SALARY;lr_output_messa ...

  3. 跪求c语言购买图书编程,C语言书费已知单价输入数量求总价 给定每种图书购买的数量,编程计算应付的总费用...

    满意答案 q33445566 2013.05.06 采纳率:55%    等级:11 已帮助:8868人 //使用循环语句依次读取就可以了 #include int main() { int n=0, ...

  4. c 语言 结构体 编程,C语言:结构体的编程问题(很简单)

    C语言:结构体的编程问题(很简单) 答案:2  信息版本:手机版 解决时间 2020-07-25 02:18 已解决 2020-07-24 02:27 先定义一个结构体Student,它包含四个成员: ...

  5. c语言i o编程,C 语言输入输出 (I/O)

    C 语言输入输出 (I/O) 在本教程中,您将学习如何使用scanf()函数从用户处获取输入,并使用printf()函数向用户显示输出. C 语言输出 在C语言编程中,printf()是主要的输出函数 ...

  6. python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程

    本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一,匿名函数 def add(x,y) return x+y ...

  7. c语言的高级编程,C语言高级编程

    Q:如何提问,能得到快速的解答? A: 1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用[]标出来,比如[第1周编程题在线测试的第1题]求解. 2)内容:内容上要把你不懂的地方说出 ...

  8. 手机c语言多文件编程,C语言多文件编程

    今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...

  9. c语言字母倒金字塔编程,C语言倒金字塔编程.ppt

    <C语言倒金字塔编程.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<C语言倒金字塔编程.ppt>文档请在天天文库搜索. 1.套含空心金字塔图案项 ...

最新文章

  1. 【python】图像映射:单应性变换与图像扭曲
  2. Hibernate4.x之Session
  3. 基于CentOS中PXE网络环境构建实例
  4. PHP - .htaccess设置显示PHP错误 (转)
  5. JS~对img标签进行优化,使用onerror进行默认图像显示
  6. LA 6474 Drop Zone (最小割)
  7. 2019建中台,2020拆中台,为什么很多公司中台战略宣告“失败”?
  8. 归并排序(C++版)
  9. Reset Password 重置密码 (CentOS 5,6,7 ; Juniper Networks: SRX100 )
  10. php 查看扩展 代码,[扩展推荐] 使用 PHP Insights 在终端查看 PHP 项目代码质量
  11. SEO技巧--代码优化
  12. 清吧音响怎么选?看看这个黄金搭配,跟着买就对了
  13. YOLOv3中Anchor理解
  14. 测试模板:Showcase规范和流程
  15. 中文分词技术--统计分词
  16. 计算机专业新生创新思维研究,计算机基础与计算思维探究论文
  17. 所谓键位冲突和无冲突的各种原理
  18. 学英语《每日一歌》之because of you
  19. JavaScript 数组array 插入[ push() ] 与 删除[ splice() ]
  20. Mac安装MongoDB(极简)

热门文章

  1. tcl脚本使用实例 - 列表,循环,变量拼接, 文件自动写入
  2. devtools安装
  3. 极品飞车ol 与服务器连接不稳定,极品飞车OL进不去游戏及解决方法 玩不了怎么办?...
  4. 是爷们看完别哭``什么叫老婆……美女最好也看
  5. php js倒计时代码(倒计时代码
  6. Java实现数字消消乐游戏项目
  7. python 扒数据_不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据
  8. 银行运用大数据解决小微贷款难
  9. matlab读取nastran模型,Matlab 读Nastran结果文件.pch,并提取刚度阵和质量阵问题
  10. 时序分析基本概念介绍RC Corner