首页 > 试题广场 >

柯里化

[编程题]柯里化
  • 热度指数:40126 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:
1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)
2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1
3、调用 b 之后,返回一个函数 c, c 的 length 属性值为 1
4、调用 c 之后,返回的结果与调用 fn 的返回值一致
5、fn 的参数依次为函数 a, b, c 的调用参数
示例1

输入

var fn = function (a, b, c) {return a + b + c}; curryIt(fn)(1)(2)(3);

输出

6
头像 人云亦云fs
发表于 2021-09-28 21:51:00
请点个赞,让更多人看到 function curryIt(fn) { return function fun(a){ if(fn.length===1)return fn(a) fn=fn.bind(this,a) return fun 展开全文
头像 喜欢拱白菜的喜羊羊在研究求职打法
发表于 2021-09-15 18:09:01
function curryIt(fn) { return function(a) { return function(b) { return function(c) { return fn(a, b, c) 展开全文
头像 T1mLee
发表于 2019-08-27 12:02:28
函数柯里化的实现,只不过严格限制了每次返回的函数只能传入一个参数: function curryIt(fn) { let args = [] return function curried(arg) { args.push(arg) 展开全文
头像 牛客562329182号
发表于 2021-11-03 20:16:25
function curryIt(fn){ // 声明一个数组来累计参数,等到参数个数符合fn函数的参数个数的时候直接调fn函数结束这次函数调用 let argc = [] return result = function(argc1){ // 将每次的参数积攒进来 展开全文
头像 牛客HT猫L
发表于 2021-08-20 14:23:34
function curryIt(fn) { return function (a) { return function (b) { return function (c) { return a + b + c 展开全文
头像 agul
发表于 2021-07-26 22:50:06
function curryIt(fn) { return function (a) { return function (b) { return function (c) { return a + b + c 展开全文
头像 番茄炒鸡蛋最好吃
发表于 2023-07-31 17:05:22
// 填写JavaScript function curryIt(fn) { let args = []; return function func(n){ args.push(n); 展开全文
头像 ♚Painting
发表于 2022-04-13 16:10:10
function curryIt(fn) { return function foo1(a){ return function foo2(b){ return function foo3(c){ return fn.apply(this 展开全文
头像 牛客431995180号
发表于 2022-04-02 13:18:21
{"css":"","js":"function curryIt(fn) {\n return function a(a){\n return function b(b){\n return function c(c){\n r 展开全文
头像 起个什么名字好呢?
发表于 2022-05-30 15:25:30
function curryIt(fn) {     return function (a) {         return&n 展开全文