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 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

Python补充11 序列的方法 正则表达式 (re包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

9610
来自专栏互联网杂技

js的隐含参数(arguments,callee,caller)使用方法

在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments arguments 该对象代表正在执行的函数和调用它的函数的参数。[...

37160
来自专栏雪胖纸的玩蛇日常

老男孩Python全栈开发(92天全)视频教程 自学笔记14

20520
来自专栏北京马哥教育

Python爬虫基础知识:Python中的正则表达式教程

云豆贴心提醒,本文阅读时间7分钟 正则表达式在Python爬虫中的作用就像是老师点名时用的花名册一样,是必不可少的神兵利器。 一、 正则表达式基础 1.1.概...

28260
来自专栏HTML5学堂

函数声明与表达式的区别

HTML5学堂:函数有不同的定义方法,一种是函数声明,另一种是函数表达式,那么这两种有何区别呢? 函数声明的基本语法 function functionName...

35340
来自专栏夏时

PHP 特色:可变变量

15040
来自专栏owent

POJ 3267 The Cow Lexicon 解题报告

1.可以令 deleteNum[pos]为输入字符串在pos处需要删除的最少字符数量;

8220
来自专栏技术之路

c++多重继承小结

如果一个类从两个不同的类里继承两个同名的成员,则需要在派生类中使用类限定符来区分他们。 即在从A和B派生出来的c类中使用a::Show()和B::Show()来...

18570
来自专栏Java开发者杂谈

java finally深入探究

When---什么时候需要finally: 在jdk1.7之前,所有涉及到I/O的相关操作,我们都会用到finally,以保证流在最后的正常关闭。jdk1.7之...

35980
来自专栏每日一篇技术文章

Swift3.0 - 类和结构体的区别

结论: 在数据量比较大的排序中,结构体排序的速度比较慢,因为结构体是值类型,排序的时候,需要大量的赋值运算。而对象只需要交换地址即可。

10710

扫码关注云+社区

领取腾讯云代金券