1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/柯里化 [curry].html
2023-04-23 22:41:08 +08:00

68 lines
2.3 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>请你编写一个函数,它接收一个其他的函数,并返回该函数的&nbsp;<strong>柯里化&nbsp;</strong>后的形式。</p>
<p><strong>柯里化&nbsp;</strong>函数的定义是接受与原函数相同数量或更少数量的参数,并返回另一个 <strong>柯里化</strong> 后的函数或与原函数相同的值。</p>
<p>实际上,当你调用原函数,如 <code>sum(1,2,3)</code>&nbsp;时,它将调用 <strong>柯里化</strong> 函数的某个形式,如 <code>csum(1)(2)(3)</code> <code>csum(1)(2,3)</code> <code>csum(1,2)(3)</code>,或 <code>csum(1,2,3)</code> 。所有调用 <strong>柯里化</strong> 函数的方法都应该返回与原始函数相同的值。</p>
<p>&nbsp;</p>
<p><strong>示例 1</strong></p>
<pre>
<b>输入:</b>
fn = function sum(a, b, c) { return a + b + c; }
inputs = [[1],[2],[3]]
<b>输出:</b>6
<strong>解释:</strong>
执行的代码是:
const curriedSum = curry(fn);
curriedSum(1)(2)(3) === 6;
curriedSum(1)(2)(3) 应该返回像原函数 sum(1, 2, 3) 一样的值。
</pre>
<p><strong>示例 2</strong></p>
<pre>
<strong>输入:</strong>
fn = function sum(a, b, c) { return a + b + c; }
inputs = [[1,2],[3]]]
<b>输出:</b>6
<strong>解释:</strong>
curriedSum(1, 2)(3) 应该返回像原函数 sum(1, 2, 3) 一样的值。</pre>
<p><strong>示例 3</strong></p>
<pre>
<strong>输入:</strong>
fn = function sum(a, b, c) { return a + b + c; }
inputs = [[],[],[1,2,3]]
<b>输出:</b>6
<strong>解释:</strong>
你应该能够以任何方式传递参数,包括一次性传递所有参数或完全不传递参数。
curriedSum()()(1, 2, 3) 应该返回像原函数 sum(1, 2, 3) 一样的值。
</pre>
<p><strong>示例 4</strong></p>
<pre>
<strong>输入:</strong>
fn = function life() { return 42; }
inputs = [[]]
<b>输出:</b>42
<strong>解释:</strong>
柯里化一个没有接收参数,没做有效操作的函数。
curriedLife() === 42
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>1 &lt;= inputs.length &lt;= 1000</code></li>
<li><code>0 &lt;= inputs[i][j] &lt;= 10<sup>5</sup></code></li>
<li><code>0 &lt;= fn.length &lt;= 1000</code></li>
<li><code>inputs.flat().length == fn.length</code></li>
<li><code>函数参数需要被显式定义</code></li>
</ul>