每天学习一点点算法
群里有个出了一道有趣的题目,分享出来让大家看看。
function add(x) {________}; alert(add(2)(3)(4)); //填空,使结果为9
解法一,
//貘大 function add(x) { var c = 0; return function(x) { c = c + x ; arguments.callee.toString = function(){ return c; }; return arguments.callee; }(x); }; alert(add(2)(3)(4));
解法二,
//三桂 function add(x) { return function(y){ return function(z){ return x+y+z; } } }; alert(add(2)(3)(4));
解法三,
//司徒正美 function add (a){ if(!isFinite(add.i)){ add.i = a }else { add.i += a; } add.valueOf = add.toString = function(){ return add.i } return add; } alert(add(2)(3)(4))
其实上题就是考curry,详见我另一篇博文。
如果你有不同的解法,也请多多指教!
posted on 2012-02-15 10:19 司徒正美 阅读(5372) 评论(20) 编辑 收藏 举报
Powered by: 博客园 Copyright © 2024 司徒正美 Powered by .NET 9.0 on Kubernetes