一个 JS 面试题目

看到一个 JS 题:

只允许使用 +-*/ 和 Math.* ,求一个函数 y = f(x, a, b);

当 x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用  |, ?, 数组

试解如下:

<script>

function transition(x, a, b){

x = Math.max(x, 0); // 先处理负数。

if(x == 100){

   return b;

}

var tmp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));

return a*tmp + b*Math.abs(tmp-1);

}

console.log(transition(101, 1, 0));// 1

console.log(transition(100.5, 1, 0));// 1

console.log(transition(100, 1, 0)); //0

console.log(transition(99.5, 1, 0));// 0

console.log(transition(99, 1, 0));// 0

console.log(transition(-23, 1, 0));// 0

</script>

一般思路是转换为 0, 1 的特殊值问题进行处理。

posted on 2011-09-26 09:28 沙加 阅读(158) 评论(2) 编辑 收藏

评论

#1楼 2011-10-13 16:46 Justin      

这题有点孔乙己  回复 引用 查看   

#2楼 2012-02-06 22:58 sun_GY      

不能使用 if else 等条件语句.
你的解题中,好像有if(x == 100) 哦..
 回复 引用 查看   

导航

公告

昵称:沙加
园龄:5年11个月
粉丝:36
关注:13
<2011年9月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

统计

搜索

 

我的标签

随笔分类(89)

随笔档案(98)

Atlas相关

积分与排名

最新评论

阅读排行榜

推荐排行榜