Open xxleyi opened 4 years ago
操练一下函数式编程中的递归模式:
// recursion pattern const recursion = (initial, iter) => iter( initial, cur => recursion(cur, iter) ) // use case: accumulate sum const sum = (n) => recursion( 0, (cur, next) => n === 0 ? cur : next(cur + (n--)) ) // use case: factorial const fact = (n) => recursion( 1, (cur, next) => n === 0 ? cur : next(cur * (n--))) // use case: fib const fib = (n) => recursion( [1, 0, 0], (cur, next) => cur[2] === n ? cur[1] : next([cur[0] + cur[1], cur[0], cur[2] + 1]) )
操练一下函数式编程中的递归模式: