答案 0 :(得分:1)
正如@Bamar所注意到的那样,原始问题中似乎有一个拼写错误。 Jj(Sa, a)
应为Jj(Ss, a)
。
通过此更改,Sa
函数会返回a
和b
的乘积,但会以非常迂回的方式计算它。
以下是记录状态信息的(固定)代码的修改版本:
var Jj, Ss, Sa;
Ss = function(n) {
console.log("C:" + (n + 1));
return n + 1;
};
Jj = function(f, nIterations) {
return function(i) {
if (nIterations < 1) {
console.log('A' + nIterations + ":" + i);
return i;
} else {
console.log('B' + nIterations);
return f(Jj(f, nIterations - 1)(i));
}
};
};
Sa = function(a, b) {
return Jj(Jj(Ss, a), b)(0);
};
以下是样本运行的输出:
> Sa(3,4)
B4
B3
B2
B1
A0:0
B3
B2
B1
A0:0
C:1
C:2
C:3
B3
B2
B1
A0:3
C:4
C:5
C:6
B3
B2
B1
A0:6
C:7
C:8
C:9
B3
B2
B1
A0:9
C:10
C:11
C:12
12