剑指 Offer 16. 数值的整数次方 快速幂

这篇博客主要介绍了如何解决剑指 Offer 中的第 16 题,即数值的整数次方问题。文章通过两种方法进行了讲解,包括非递归的快速幂算法和递归实现。这两种方法都是求解一个数的幂的高效策略,快速幂算法尤其在计算大数次方时展现出优秀的效率。
摘要由CSDN通过智能技术生成

剑指 Offer 16. 数值的整数次方

难度:中等
题目描述
在这里插入图片描述

解题思路

1、非递归写法 快速幂

 /*
				     *   剑指 Offer 16. 数值的整数次方
				  * 2020/8/4  非递归写法
				  */
				 public double myPow(double x, int n) {
					 long time = n;
					 if(time < 0) {
						 x = 1/x;
						 time *= -1;
					 }
			        double res = 1;
			        while (time > 0) {
			            if ((time % 2) == 1) {
			                res *= x;
			            }
			            x *= x;
			            time /= 2;
			        }
			        return res;
				 }

在这里插入图片描述

2、递归写法

//递归写法
	public double myPow1(double x, int n) {
		 //递归出口
		 if(n == 0) return 1;
		 if(n == 1) return x;
		 if(n == -1) return 1/x;
		 
		 double half = myPow(x, n / 2);
	     double mod = myPow(x, n % 2);
	     return half * half * mod;
		 
	 }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值