当前位置: 首页 > news >正文

柳城网站制作天津网站建设技术外包

柳城网站制作,天津网站建设技术外包,企业查询学历需要哪些信息,长春建设局网站快速幂算法 快速幂算法可用分治法实现 不难看出,对任意实数a和非负整数n,有: a n { 1 , n 0 , a ≠ 0 0 , a 0 ( a n 2 ) 2 , n > 0 , n 为偶数 ( a n 2 ) 2 ∗ a , n > 0 , n 为奇数 a^n \begin{cases} 1, & n 0, a\neq 0…

快速幂算法

快速幂算法可用分治法实现

不难看出,对任意实数a和非负整数n,有:
a n = { 1 , n = 0 , a ≠ 0 0 , a = 0 ( a n 2 ) 2 , n > 0 , n 为偶数 ( a n 2 ) 2 ∗ a , n > 0 , n 为奇数 a^n = \begin{cases} 1, & n = 0, a\neq 0 \\ 0, & a = 0 \\ \left( a^\frac{n}{2} \right)^2, & n > 0, n \text{为偶数} \\ \left( a^\frac{n}{2} \right)^2*a, & n > 0, n \text{为奇数} \end{cases} an= 1,0,(a2n)2,(a2n)2a,n=0,a=0a=0n>0,n为偶数n>0,n为奇数
这里n/2是C语言中的整除计算,所以n为奇数时需要额外乘一个a
n=0可作为递归边界

递归实现

  • a如果等于0则返回0

  • n=0时作为递归边界返回1

  • n不等于0时,递归求 a n 2 a^\frac{n}{2} a2n的值,再根据n的奇偶性返回相应值

代码
double exp2(int a, int n){if (a == 0)return 0;if (n <= 0)return 1;else{int x = exp2(a, n/2);if (n % 2)return x * x *a;return x * x;}
}

时间复杂度为O(logn)

非递归实现

非递归实现的方法在于将指数n分解乘二进制,将对应二进制位为1的乘起来,就得到最终的结果

例:计算 3 93 3^{93} 393

93 = ( 1011101 ) 2 = 64 + 16 + 8 + 4 + 1 93=(1011101)_2=64+16+8+4+1 93=(1011101)2=64+16+8+4+1

3 93 = 3 64 ∗ 3 16 ∗ 3 8 ∗ 3 4 ∗ 3 3^{93}=3^{64}*3^{16}*3^{8}*3^{4}*3 393=36431638343

代码
  • 变量s存储当前计算结果,并最终作为返回值

  • 变量b存储当前数位的乘方值

  • 遍历n的每一个二进制位

    • n & 1判断指数当前的最后一位是否为1
    • 每次循环将指数n右移一位(除以2),并将b累乘一次,计算当前的乘方
double exp2(int a, int n) {double b, s = 1.0;b = a;while (n > 0) {if (n & 1) {s *= b;}n /= 2;b *= b;}return s;
}

因为n有logn+1个二进制位,只需要次计算就能得到 a n a^n an,时间复杂度为O(n)

测试
double exp2(int a, int n) {double b, s = 1.0;b = a;while (n > 0) {if (n & 1) {s *= b;}n /= 2;b *= b;}return s;
}
int main()
{cout << exp2(3, 93);return 0;
}

结果

在这里插入图片描述

在这里插入图片描述

结果正确

由于递归算法涉及到对栈的操作,一般建议使用非递归算法

http://www.khdw.cn/news/8949.html

相关文章:

  • iis下建立asp网站seo优化网站源码
  • 网站建设经济可行性b2c有哪些电商平台
  • 怎么自己创建一个网站芜湖网络营销公司
  • 免费做网站txt外链厦门关键词排名优化
  • 安卓手机应用开发福州网站优化公司
  • 中国最好的网站制作公司百度一下 官方网
  • 县 两学一做网站网络推广服务合同
  • h5 响应式网站国外免费加客源软件
  • 做交易网站什么开发语言网络广告营销的案例
  • 网站建设合同补充内容营销策划公司是干什么的
  • 深圳公司手机网站制作抖音优化排名
  • 学校网站类型免费发布推广的平台
  • 美国客户打不开我们的网站百度引流免费推广怎么做
  • 建设网站商城后台系统百度主页网址
  • 学校网站建设报价电脑系统优化软件十大排名
  • 万江区仿做网站网络营销有哪些例子
  • 南阳做网站网店运营在哪里学比较好些
  • 深圳网站建设珠江广场网络热词2022
  • 微网站趋势在线葡京在线葡京
  • 政府网站建设指引企业线上培训平台有哪些
  • 无锡哪家网站做的好上海还能推seo吗
  • 微信网站开发多少钱太原网站建设方案咨询
  • 社交网站模板下载3d建模培训学校哪家好
  • 怎样做知道网站网络营销研究现状文献综述
  • 长沙企业建站按效果付费网络公司seo推广
  • 工程建设招标网都有哪些网站东莞网站制作推广公司
  • 云南网站建设企业推荐一键生成网页
  • 深圳网络推广最新招聘网站优化搜索排名
  • 做中英文网站网络营销的种类有哪些
  • 中国农村建设投资有限公司网站社交媒体营销