Math对象面试题目

HTML5学堂:JavaScript的Math对象的命令虽然简单,但是逻辑性要求比较高,它可以辅助开发者实现一些JavaScript复杂效果,这就要求大家有一定的逻辑思维了。今天要给大家分享Math对象比较奇葩的题目。

Math对象面试题目

只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组(本题目来源于互联网)

剖析题目

f函数返回值的情况如下:

x < 100 返回值为a

x == 100 返回值为b

x > 100 返回值为b

该题目我们可以从x > 100和x <= 100入手,考虑如何判断X的大小?当然我们可以先判断X等于100的时候。

if (x == 100) {
    return b;
};

那现在我们只差x小于和大于100的情况了,该如何判断呢?一般涉及到判断,大家可能会想到转换成0和1,这样就比较好判断了。

我们可以这么来想,如果比100小的是0

Math.max(x - 100, 0)

如果比100大的是1

Math.ceil(Math.min(Math.max(x - 100, 0), 1))

完整的参考答案

function f(x, a, b) {
    var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
 
    return a * temp + b * (1 - temp);
}
console.log(f(-10, 1, 2));

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2015-10-23

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

随机产生去重数组

HTML5学堂:数组、字符串、正则,三者应该说是众多开发者的死敌,方法很多,单纯的记住了没有意义,只有灵活应用才是王道~因此,对于此类问题,重要的是基本思路,根...

2656
来自专栏aCloudDeveloper

重载(overload)、覆盖(override)、隐藏(hide)的区别

这三个概念都是与OO中的多态有关系的。如果单是区别重载与覆盖这两个概念是比较容易的,但是隐藏这一概念却使问题变得有点复杂了,下面说说它们的区别吧。 重载是...

2036
来自专栏Fundebug

JavaScript的值传递和引用传递

803
来自专栏Pythonista

Golang之匿名函数和闭包

 基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者 任何全局上下文中定义,而是在定义代码块的环境中定义。要执行的代码块...

541
来自专栏Crossin的编程教室

【Python 第52课】 元组

上一次pygame的课中有这样一行代码: x, y = pygame.mouse.get_pos() 这个函数返回的其实是一个“元组”,今天我们来讲讲这个东西。...

3197
来自专栏一个爱瞎折腾的程序猿

进制的相互转换学习记录

即:000->0,001->1,010->2,011->3,100->4,101->5,110->6,111->7 二进制:10111 八进制:27 计算:...

852
来自专栏坚毅的PHP

python的数学函数(1)-python组合函数模块itertools

要解决的问题: 输出n个 ['A','T','C','G'] 所有的排列组合。 比如n=2 时,输出为 AA,AT,AC,AG,TA,TT,TC,TG,……...

3624
来自专栏前端那些事

强大的原型和原型链

前两次总结了JavaScript中的基本数据类型(值类型<引用类型>,引用类型<复杂值>)以及他们在内存中的存储,对内存空间有了一个简单的了解,以及第二次总结了...

1728
来自专栏Python小屋

Python中lambda表达式的常见用法

非常抱歉,昨天发的代码中有一处小错误,已通过留言的方式进行了纠正,详情请见【详解Python列表推导式】 lambda表达式常用来声明匿名函数,即没有函数名字的...

2829
来自专栏aCloudDeveloper

指向函数的指针

Author: bakari   Date: 2012.8.8 做好总结我觉得是把知识学扎实必不可少的实践环节。这个知识点是当初自己在学习这一块做的一些笔记,现...

1746

扫描关注云+社区