c语言求幂 编程,C语言求幂计算的高效解法
本文实例演示了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语言求幂计算的高效解法相关推荐
- c语言 源程序代码,编程(C语言源程序代码)
编程(C语言源程序代码) 已知 S=1+1/(1+2)+1/(1+2+3)+-+1/(1+2+3+-+N) ,当N的值为50时,求S的值. 要求:按四舍五入的方式精确到小数点后第四位. #includ ...
- jdy40程序C语言,lr脚本编程C语言.docx
lr脚本编程C语言.docx 1.define COUNT 100define SALARY 4000Actionint total;totalCOUNT*SALARY;lr_output_messa ...
- 跪求c语言购买图书编程,C语言书费已知单价输入数量求总价 给定每种图书购买的数量,编程计算应付的总费用...
满意答案 q33445566 2013.05.06 采纳率:55% 等级:11 已帮助:8868人 //使用循环语句依次读取就可以了 #include int main() { int n=0, ...
- c 语言 结构体 编程,C语言:结构体的编程问题(很简单)
C语言:结构体的编程问题(很简单) 答案:2 信息版本:手机版 解决时间 2020-07-25 02:18 已解决 2020-07-24 02:27 先定义一个结构体Student,它包含四个成员: ...
- c语言i o编程,C 语言输入输出 (I/O)
C 语言输入输出 (I/O) 在本教程中,您将学习如何使用scanf()函数从用户处获取输入,并使用printf()函数向用户显示输出. C 语言输出 在C语言编程中,printf()是主要的输出函数 ...
- python语言支持函数式编程_Python语言之Pyhton入门笔记函数式编程
本文主要向大家介绍了Python语言之Pyhton入门笔记函数式编程,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 一,匿名函数 def add(x,y) return x+y ...
- c语言的高级编程,C语言高级编程
Q:如何提问,能得到快速的解答? A: 1)标题:撰写标题时,要注意把要问的问题的出处和核心词写出来,最好用[]标出来,比如[第1周编程题在线测试的第1题]求解. 2)内容:内容上要把你不懂的地方说出 ...
- 手机c语言多文件编程,C语言多文件编程
今天,IT培训网小编为大家总结的是C语言,C语言多模块开发(多文件编程). 目前为止,我们编写的大部分C语言程序都只包含一个源文件,没有将代码分散到多个模块中,对于只有几百行的小程序来说这或许可以接受 ...
- c语言字母倒金字塔编程,C语言倒金字塔编程.ppt
<C语言倒金字塔编程.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<C语言倒金字塔编程.ppt>文档请在天天文库搜索. 1.套含空心金字塔图案项 ...
最新文章
- 【python】图像映射:单应性变换与图像扭曲
- Hibernate4.x之Session
- 基于CentOS中PXE网络环境构建实例
- PHP - .htaccess设置显示PHP错误 (转)
- JS~对img标签进行优化,使用onerror进行默认图像显示
- LA 6474 Drop Zone (最小割)
- 2019建中台,2020拆中台,为什么很多公司中台战略宣告“失败”?
- 归并排序(C++版)
- Reset Password 重置密码 (CentOS 5,6,7 ; Juniper Networks: SRX100 )
- php 查看扩展 代码,[扩展推荐] 使用 PHP Insights 在终端查看 PHP 项目代码质量
- SEO技巧--代码优化
- 清吧音响怎么选?看看这个黄金搭配,跟着买就对了
- YOLOv3中Anchor理解
- 测试模板:Showcase规范和流程
- 中文分词技术--统计分词
- 计算机专业新生创新思维研究,计算机基础与计算思维探究论文
- 所谓键位冲突和无冲突的各种原理
- 学英语《每日一歌》之because of you
- JavaScript 数组array 插入[ push() ] 与 删除[ splice() ]
- Mac安装MongoDB(极简)
热门文章
- tcl脚本使用实例 - 列表,循环,变量拼接, 文件自动写入
- devtools安装
- 极品飞车ol 与服务器连接不稳定,极品飞车OL进不去游戏及解决方法 玩不了怎么办?...
- 是爷们看完别哭``什么叫老婆……美女最好也看
- php js倒计时代码(倒计时代码
- Java实现数字消消乐游戏项目
- python 扒数据_不踩坑的Python爬虫:如何在一个月内学会爬取大规模数据
- 银行运用大数据解决小微贷款难
- matlab读取nastran模型,Matlab 读Nastran结果文件.pch,并提取刚度阵和质量阵问题
- 时序分析基本概念介绍RC Corner