剑指offer代码解析——面试题11求a的b次方

/**
 * 题目:实现a的b次方
 * @author 大闲人柴毛毛
 */
public class Power {
	/**
	 * 分析:a的b次方就是将a连乘b次,
	 * 本题的逻辑性不难,关键在于程序的健壮性,
	 * 需要将可能的情况考虑全面。
	 * @param a 底数
	 * @param b 指数
	 * @return a的b次方
	 */
	public static double power(double a,int b){
		//若底数为0,则结果为0
		if(Power.equal(a,0.0))
			return 0;
		
		//若指数为0,则结果为1
		if(b==0)
			return 1;
		
		//计算a^|b|,若指数为负数,则取b的绝对值
		double c = a;//c存放计算结果
		for(int i=0; i<(b<0?-b:b)-1; i++){
			c *= a;
		}
		
		//输出结果
		if(b<0)
			return 1/c;
		else
			return c;
	}
	
	
	/**
	 * 由于float、double都存在精度问题,float、double进行计算时得不到精确的结果,
	 * 因此误差若小于0.0001,我们就认为近似相等,因此需要定义判断近似相等的函数。
	 */
	
	
	/**
	 * 比较两个double是否近似相等
	 * PS:若误差在0.0001内就认为相等
	 * @param a
	 * @param b
	 * @return 是否近似相等
	 */
	public static boolean equal(double a, double b){
		if(a-b<=0.0001 && a-b >=-0.0001)
			return true;
		else
			return false;
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web前端教室

javascript 红皮高程(11)

为革命,重学JS高程,预备...齐! 3.4.7 object哈,对象。找不着对象的同学们,建议看看JS高程,就能找着对象了。 ECMAScript中的对象,是...

1845
来自专栏Albert陈凯

Scala的编程规范与最佳实践

应用层 80/20原则:80%的代码是 纯函数,其余如处理IO,数据库,用户交互等方面的20%的代码也应该尽量轻量级 培养面向表达式的编程思维,培养函数式编...

3075
来自专栏WindCoder

《Linux内核分析》之计算机是如何工作的 实验总结

马马虎虎学完了Python课程,一直想学下linux,看到里面有个linux的就选上了。当初没细看,如今听完第一节课有点傻眼,竟然糊里糊涂给自己找了一科汇编语言...

431
来自专栏菩提树下的杨过

scala 学习笔记(07) 一等公民的函数

在scala中一切皆对象,一切皆函数,函数跟Int,String、Class等其它类型是处于同等的地位,换句话说,使用函数跟使用普通的类型一样,没什么区别,因此...

1787
来自专栏安恒网络空间安全讲武堂

堆栈基础(一)

1086
来自专栏函数式编程语言及工具

泛函编程(11)-延后计算-lazy evaluation

     延后计算(lazy evaluation)是指将一个表达式的值计算向后拖延直到这个表达式真正被使用的时候。在讨论lazy-evaluation之前...

1946
来自专栏十月梦想

js时间对象

//     getDay() 获得日期是周几 (0代表周天,1-6分别代表周1-6)

654
来自专栏IT可乐

深入理解计算机系统(3.4)------算术和逻辑操作

  上一篇博客  我们介绍了几种数据传送指令,包括MOV,MOVS,MOVZ,PUSH和POP等,理解起来也不算难。本篇博客我们来接着看汇编语言的算术与逻辑运算...

1779
来自专栏函数式编程语言及工具

Scalaz(52)- scalaz-stream: 并行运算-parallel processing concurrently by merging

   如果scalaz-stream真的是一个实用的数据流编程工具库的话,那它应该能处理同时从多个数据源获取数据以及把数据同时送到多个终点(Sink),最重要的...

1878
来自专栏十月梦想

date函数和日期有关

tring date($format[,$timestamp]),[]内的可以使用strtotime输出指定日期

722

扫描关注云+社区