在通过 jsperf 第一百万次运行 'ol 阶乘递归单行函数之后,我决定尝试一些更有趣的东西......但它不起作用!
function n(cap){
return (function y(x){
return ((x < cap) ? x^2/y(x+1)+2*x-1 : 1)
}(1))
}
然而,这应该有效(并且对于更大的“cap”值返回越来越精确的实际值);当针对数字 0-19 运行时,它会在 Chrome 控制台中生成以下输出:
1 (x2)
2
0
2 (x16)
我迷茫了。当单步执行时,考虑到调用堆栈,它显然是递归的,但无法返回除自然数以外的任何内容。有什么想法吗?
最佳答案
这是您的^
,它是按位异或
,不是幂运算符。提出一些东西: Math.pow(2, 10) == 1024
JavaScript 中的所有按位运算都有隐式转换为 int,即 0^3.14159265358979323846 == 3
关于Javascript 单行调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6600865/