精华内容
下载资源
问答
  • 注意:判断两个小数是否相等不能用==,因为计算机表示小数有误差,我们只能判断它们差的绝对值是否一个很小的范围内。 题外话:程序错误处理的三种方法:返回值、全局变量、异常。返回值好处是根据返回值判断错误...

    面试题11:数值的整数次方

    实现函数double Power(double base,int exponent),求base的exponent次方,不得使用库函数,不用考虑大数问题。

    注意:判断两个小数是否相等不能用==,因为计算机表示小数有误差,我们只能判断它们差的绝对值是否在一个很小的范围内。

    题外话:程序错误处理的三种方法:返回值、全局变量、异常。返回值好处是根据返回值判断错误原因,缺点是函数只能返回一个值,使用不便。全局变量不会占用函数返回结果。异常更清晰明了,但有些语言不支持。

    本题一般思路的Java实现如下:

    public class Power {
    	private double power(double base,int exponent) throws Exception{
    		double result = 0.0;
    		if(equal(base,0.0) && exponent<0){
    			throw new Exception("0的负数次幂无意义");
    		}
    		if(exponent == 0){//其中0的0次方没有意义,返回0或1都可以
    			return 1.0;
    		}
    		if(exponent > 0){
    			result = powerWithExponent(base, exponent);
    		}else{//负数次幂
    			result = powerWithExponent(1.0/base, -exponent);
    		}
    		return result;
    	}
    	//计算结果
    	private double powerWithExponent(double base,int exponent){
    		double result = 1.0;
    		for(int i=1;i<=exponent;i++){
    			result = result * base;
    		}
    		return result;
    	}
    	//判断两个小数是否相等
    	private boolean equal(double num1,double num2){
    		if( ((num1-num2) > -0.0000001) && (num1-num2) < 0.0000001 ){
    			return true;
    		}else return false;
    	}
    	public static void main(String[] args) throws Exception {
    		Power test = new Power();
    		System.out.println(test.power(2, 3));
    	}
    }
    
    但以上程序的计算过程并不是效率最高的,因为假如求32次方,要循环31次,但如果我们已经求出了16次方,再平方一次就好了,而16可以由8再平方,以此类推。

    归纳为当n为偶数时,a^n=a^(n/2)*a^(n/2),n为奇数时,a^n=a^((n-1)/2)*a^((n-1)/2)*a,计算量会减少,可以用递归实现,复杂度从O(n)变成了O(logn)。

    细节:用右移运算符代替除以2,用与运算符代替取余来判断奇偶,因为位运算符效率高很多。程序如下:

    private double powerWithExponent2(double base,int exponent){
    	if(exponent == 0) return 1;
    	if(exponent == 1) return base;//两个递归终止的条件
    	double result = powerWithExponent2(base, exponent >> 1);//用右移1位代替除2
    	result *= result;
    	if( (exponent & 1) == 1) result *= base;//二进制最低位为1,则为奇数
    	return result;
    	//以输入(2,6)为例进行说明:开始后,进入第一次递归,输入为(2,3)
    	//然后进入第二次递归,输入为(2,1),此时exponent为1,返回base为2,也就是说第二次递归的执行结果为2
    	//然后回到了第一次递归,里头的result值为第二次递归的结果2,然后向下执行,result为2*2,第一次递归时exponent为3,result=4*2,返回8
    	//所以第一次递归的执行结果为8,然后回到原函数,里头的result为8,然后执行8*8,此时exponent为6,最终结果就是64。
    }
    展开全文
  • 这样就保证返回值始终0.0~1.0的区间。 <pre><code>js function fract(num) { return num - Math.floor(num); } console.log(-3.75 % 1); // -0.75 console.log(fract(num)); // 0.25 </code></pre> 好了࿰...
  • 由用户定义的这种要返回函数值的函数,必须函数定义和函数说明中明确返回值的类型。 (2)无返回值函数  此类函数用于完成某项特定的处理任务, 执行完成后不向调用者返回函数值。这类函数类似于其它语言的过程。...
  • 34.多个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和 35.返回 Column 英文字 36.查找指定列名的列数 37.文字格式的时间(分:秒)转化为数字格式(秒) 38.将"hh:mm:ss"格式的时分秒数转换成秒数...
  • 易语言 茶凉专用模块

    2010-05-04 12:26:36
    参数 是否后台, 逻辑型, 可空, 默认为假:可见到的颜色点 真:后台窗口颜色点 .参数 色深, 整数型, 可空, 所截取的图片位深度,默认为16位(8,16,24,32) .子程序 超级延迟, , 公开, 无资源占用的延时(无返回值) .参数...
  • 6.22 如何一个文件中判断声明为extern的数组的大小(例如,数组定义和大小另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存分配 ...
  • 在判断底数base是不是等于0的时候,不能直接写base==0, 因为计算机内表示小数时有误差,只能判断他们的差的绝对值是不是一个很小的范围内。如果采用递归解法,当n为偶数, an = an/2 * an/2,当n为奇数, an = a(n-1)/...
  • php高级开发教程说明

    2008-11-27 11:39:22
    因为这些语言集中一个有限的应用领域,他们的成功性也限制这些领域。 像C和P a s c a l这样的语言变得如此流行,就是因为它们被广泛应用,并且它们不针对特殊问题, 却提供了能很好地解决普遍问题的工具。 ...
  • javascript入门笔记

    2018-05-15 15:01:07
    使用场合:任意数字与1做按位与操作,可以判断奇偶性,结果为1,则为奇数,否则为偶数 0 :0 1 :1 2 :10 3 :11 4 :100 5 :101 5 & 1 101 001 ========== 001 4 & 1 100 001 ==== 000 2、按...
  •  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,世界范围内广受欢迎,口碑极佳。  本书的目标是使你C语言程序设计方面由一位初学者成为一位称职的程序员。 内容简介  本书是...
  • 那就是,这个函数被限制声明它的模块的本地范围内使用 2.引用与指针有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是...
  • o 3.8 如何向接受结构参数的函数传入常数值? o 3.9 怎样从/向数据文件读/写结构? o 3.10 我的编译器结构中留下了空洞, 这导致空间浪费而且无法与外部数据文件进行 "二进制" 读写。能否关掉填充, 或者控制结构...
  • 数据库操作支持库增加读写长整数字段的功能,但受限于系统接口暂不能读写超出整数范围数值。 7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。 8. 修改BUG:IDE中打开源代码文件(.e)后...
  • 实例290 获得弹出对话框的相关返回值 实例291 使用OpenFileDialog组件打开文件 实例292 设置OpenFileDialog组件中只能选择图片文件 实例293 使用OpenFileDialog组件打开多个文件 实例294 使用SaveFileDialog...
  • 实例290 获得弹出对话框的相关返回值 实例291 使用OpenFileDialog组件打开文件 实例292 设置OpenFileDialog组件中只能选择图片文件 实例293 使用OpenFileDialog组件打开多个文件 实例294 使用SaveFileDialog...
  • 实例290 获得弹出对话框的相关返回值 实例291 使用OpenFileDialog组件打开文件 实例292 设置OpenFileDialog组件中只能选择图片文件 实例293 使用OpenFileDialog组件打开多个文件 实例294 使用SaveFileDialog...
  • 这样就保证了循环变量i的值正常范围内,从而避免了对指针pDBFat进行内存越界的操作。  从上面的测试过程中,我们可以看到:如此严重的问题,仅仅是一个简单的错误引起的。实际上,系统的不稳定往往是由这些看似...
  •  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,世界范围内广受欢迎,口碑极佳。  本书的目标是使你C语言程序设计方面由一位初学者成为一位称职的程序员。 内容简介  本书是...
  • 1.30 如何判断哪些标识符可以使用,哪些被保留了? 15 初始化 18 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 18  1.32 下面的...
  • EL表达式 (详解)

    2009-12-24 14:32:53
    范围内的变量.applicationScope表示应用范围的变量. 3 --<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁 止.JSP2.0中默认的启用EL语言. 4-- EL语言可显示 逻辑表达式如${true ...
  •  实例020 使用条件运算符判断指定年份是不是闰年 25  实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27  实例022 使用checked关键字处理“溢出”错误 27  实例023 使用typeof关键字获取类的...
  • 函数作用:多个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和..........................59 '35.函数作用:返回 Column 英文字.......................60 '36.函数作用:查找指定列名的列数.......
  • JavaScript笔记

    2018-09-28 11:21:56
    |--arr.indexOf(x) 返回x数组中的下标---经常用于判断元素是否存在。如返回-1,x则不数组中 18.Number对象: |--x.toFixed(num):可把Number四舍五入为指定小数位数(num:0-20)的数字 |--x.toString():用于把...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    如何将数值型字符转换为数字(Integer,Double) 如何将数字转换为字符 如何取小数点前两位,并四舍五入。 4.日期和时间 如何取得年月日,小时分秒 如何取得从1970年到现在的毫秒数 如何获取某个日期是当月的...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    返回值:0=最高,1=高于标准,2=实时,3=标准,4=低于标准,5=低,返回-1表示无权限访问进程。 2、新增“进程_置优先级”,特殊进程需要特权,设置一个进程的优先级别,成功返回真,失败返回假。 3、新增“窗口_取激活句柄...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    1.30 如何判断哪些标识符可以使用,哪些被保留了? 15 初始化 18 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 18  1.32 下面的...
  • LINGO软件的学习

    2009-08-08 22:36:50
    主窗口的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要该窗口编码实现。下面举两个例子。 例1.1 如何LINGO中求解如下的LP问题: 模型窗口中输入如下代码: min=2*x1+3*...
  • 精通正则表达式(中英)

    热门讨论 2011-09-08 13:18:58
    用环视功能为数值添加逗号 59 text-to-html转换 67 回到单词重复问题 77 第3章:正则表达式的特性和流派概览 83 正则的世界中漫步 85 正则表达式的起源 85 最初印象 91 正则表达式的注意事项和处理方式 93 集成式...
  • 语句if(x == 3)首先判断x的值是否为3,若相等条件表达式的值为ture,否则为false。 2-15 什么叫做作用域?什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 作用域是一个标识符程序正文中有效的...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

判断数值在范围内返回值