题目:
这次我们要使用函数编写计算并获取结果。让我们看一些例子:
seven(times(five())); // must return 35
four(plus(nine())); // must return 13
eight(minus(three())); // must return 5
six(dividedBy(two())); // must return 3
要求:
每个数字必须有一个函数,范围从0(“零”)到9(“ 9”)
以下每个数学运算必须具有一个函数:加,减,乘,除(divided_by在Ruby和Python中)
每次计算仅由一个操作和两个数字组成
最外层的函数代表左操作数,最内层的函数代表右操作数
除法应为整数除法。例如,应返回2,而不是2.666666...:
eight(dividedBy(three()));
我的题解
function zero(x) {
if(x === undefined)
return 0
else{
str = 0 + x;
return Math.floor(eval("str="+str))
}
}
function one(x) {
if(x === undefined)
return 1
else{
str = 1 + x;
return Math.floor(eval("str="+str))
}
}
function two(x) {
if(x === undefined)
return 2
else{
str = '2' + x;
return Math.floor(eval("str="+str))
}
}
function three(x) {
if(x === undefined)
return 3
else{
str = '3' + x;
return Math.floor(eval("str="+str))
}
}
function four(x) {
if(x === undefined)
return 4
else{
str = '4' + x;
return Math.floor(eval("str="+str))
}
}
function five(x) {
if(x === undefined)
return 5
else{
str = '5' + x;
return Math.floor(eval("str="+str))
}
}
function six(x) {
if(x === undefined)
return 6
else{
str = '6' + x;
return Math.floor(eval("str="+str))
}
}
function seven(x) {
if(x === undefined)
return 7
else{
str = '7' + x;
return Math.floor(eval("str="+str))
}
}
function eight(x) {
if(x === undefined)
return 8
else{
str = '8' + x;
return Math.floor(eval("str="+str))
}
}
function nine(x) {
if(x === undefined)
return 9
else{
str = '9'+ x;
return Math.floor(eval("str="+str))
}
}
function plus(x) {
return '+'+x
}
function minus(x) {
return '-'+x
}
function times(x) {
return '*'+x
}
function dividedBy(x) {
return '/'+x
}
思路
- 应为调用时是eight(dividedBy(three()))这一种形式,同一个函数做出了不同的响应,判断做出什么响应,我是通过是否有参数传入来判断的。所有每一个数字函数都有if else判断
- 将eight(dividedBy(three()))整个式子转化为算数表达式。例如:
eight(dividedBy(three()))->eight(dividedBy(3))->eight(/3)->8/3->return 2 - 最后返回时去除浮点数就可以了
- 当然上面有很多重复的代码还可以优化。
大神的做法
var n = function(digit) {
return function(op) {
return op ? op(digit) : digit;
}
};
var zero = n(0);
var one = n(1);
var two = n(2);
var three = n(3);
var four = n(4);
var five = n(5);
var six = n(6);
var seven = n(7);
var eight = n(8);
var nine = n(9);
function plus(r) { return function(l) { return l + r; }; }
function minus(r) { return function(l) { return l - r; }; }
function times(r) { return function(l) { return l * r; }; }
function dividedBy(r) { return function(l) { return l / r; }; }
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!