Sum函数使用递归和多个参数

时间:2017-08-11 20:27:17

标签: javascript math recursion

是否需要创建一个与递归调用(例如(1)(2)(3)(4))和多个参数(例如(1,2,3,4))一起使用的求和函数?

像这样:

sum(5, 5) // 10
sum(5)(5) // 10

谢谢。

1 个答案:

答案 0 :(得分:0)

参考:https://codeburst.io/perpetual-currying-in-javascript-5ae1c749adc5

感谢Param Singh,他想出了一个很好的解决方案来解决可变参数的无限变迁问题

            function callFun(fn){

                const doTo = (args) => args.reduce((acc, a) => fn.call(fn, acc, a))

                const next =(...args)=>{
                    return (...innerArg)=> {
                        if(innerArg.length){
                            return next(...args, doTo(innerArg))
                        }else{
                            return doTo(args)
                        }
                    }
                }

                return next()    
            }

            const sum = callFun((a,b) => a + b)

            console.log(sum(1)(2)(3,2,1)())