求幂的递归和非递归实现
来源:互联网 发布:服装销售网络渠道 编辑:程序博客网 时间:2024/05/21 10:46
递归版本的实现:
long long int Pow1(int x,unsigned int N){if (N == 0){return 1;}if (N & 0x01){return Pow(x * x,N >> 1) * x;}elsereturn Pow(x * x,N >> 1);}递归 的基准条件是:N==0 此时返回1(不调用自身)。若N是偶数,则x的N次方等于 x*x的N/2次方。若N是奇数,则x的N次方等于 x*x的N/2次方在乘以x。N/2可以用N右移一位来实现。
非递归版本的实现:
long long int Pow(int x,unsigned int N){long long int n = x;long long int ans = 1;while (N){if (N & 0x01){ans *= n;}n *= n;N = N >> 1;}return ans;}把N用二进制来表示,例如N=9,则二进制为:1001,x的N次方就等于x乘以x的8次方,再比如,1111,则就是x乘以x的平方再乘x的四次方,再乘x的八次方。因此可以用一个变量n(初始为x)来保存x的幂次。然后开始循环,若N最右位为1,则结果乘以n,然后让n平方,N右移。
0 0
- 求幂的递归和非递归实现
- 欧几里得算法求最大公约数的递归和非递归实现
- 递归和非递归分别实现求n的阶乘
- 递归和非递归分别实现求n的阶乘
- 求幂的递归跟非递归
- 求阶乘 递归实现和非递归实现
- 阶乘的递归和非递归实现
- 快速幂的递归和非递归实现
- 求二叉树深度 -- 递归和非递归实现
- 关于求平方和的,递归和非递归的写法
- C语言程序-递归和非递归分别实现求n的阶乘
- 二叉树的遍历,递归和非递归,求深度
- 求二叉树深度的递归和非递归算法
- 求X的N次方!递归和非递归
- 求幂的非递归解法
- 非递归求集合的幂集
- 菲波拉契数列的递归实现和非递归实现
- Fibonacci的递归实现和非递归实现
- storm源码之一个class解决nimbus单点问题
- DbUtils的使用(个人理解,有不同的可以指出)
- 如何用Green定理求五星形曲线所围面积的"精确解"
- 递归字符串截取方法
- Excel时间处理
- 求幂的递归和非递归实现
- maven中的pom.xml
- IT痴汉的工作现状37-我想找一个人
- 通过AFNetworking下载网络闪屏用的图片并存储到本地同时获取header头相关信息
- 规则引擎需求(捕捉业务规则需求,将需求转换为规则引擎)
- java 多线程之优先级简单代码
- 如何生成android的keystore文件
- GRE写作必备句型
- LeetCode -- Course Schedule