美文网首页
实现一个累加器sum(n)

实现一个累加器sum(n)

作者: meow_possion | 来源:发表于2019-06-14 16:20 被阅读0次

面试中遇到过几次的问题,记录下来方便以后查看。(今日头条面试题)
实现一个累加器sum(n),使得sum(1) 输入1,sum(1)(2)输出3,sum(1)(2)(3)输出6
思路:累加器中有记忆功能,第一反应就是用闭包实现, 题意体现出sum函数是可以无限调用的,所以sum的返回应该是一个函数。
具体代码实现如下,仅供参考

function sum(n){
    let result = 0;
    function getResult(n){
        result += n;
        console.log(result)
        return getResult
    }
    return getResult(n)
}

扩散思维,假如题目变成,实现一个累加器sum(n),使得sum(1) 输入1,sum(2)输出3,sum(3)输出6,那么应该怎么实现呢?

思路:累加器中还是有记忆功能,但这次不是无限调用,而是记住上次调用的结果,那么还是用闭包实现。并且sum函数应该是一个立即调用函数,返回的结果是一个函数。
具体代码实现如下:

var sum = (function(n){
    let result = 0;
    return function(n){
        n = n ? n : 0;
        result += n;
        return result;
    };
})()

相关文章

网友评论

      本文标题:实现一个累加器sum(n)

      本文链接:https://www.haomeiwen.com/subject/dqaefctx.html