Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;超过调用堆栈大小“0”;将Ruby代码移植到JavaScript时_Javascript_Ruby - Fatal编程技术网

&引用;超过调用堆栈大小“0”;将Ruby代码移植到JavaScript时

&引用;超过调用堆栈大小“0”;将Ruby代码移植到JavaScript时,javascript,ruby,Javascript,Ruby,这是以顺时针方向绕过二维阵列(矩阵)的函数:() 我尝试用JavaScript进行模拟: function transpose(a) { return a.length === 0 ? a : a[0].map((col, i) => a.map((row) => row[i])) } function f(a) { return a.length === 0 ? [] : a.shift + f(transpose(a).reverse()); } f([[1

这是以顺时针方向绕过二维阵列(矩阵)的函数:()

我尝试用JavaScript进行模拟:

function transpose(a) {
    return a.length === 0 ? a : a[0].map((col, i) => a.map((row) => row[i]))
}

function f(a) {
    return a.length === 0 ? [] : a.shift + f(transpose(a).reverse());
} 

f([[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]);
但它不起作用,控制台中出现错误:

请告诉我问题是什么,有没有可能在JS上这样做

您需要使用
shift()
调用
shift
函数。否则,不会从数组中删除en元素并导致堆栈溢出,因为您会通过递归不断发送相同的数组:

函数转置(a){
返回a.length==0?a:a[0].map((列,i)=>a.map((行)=>row[i]))
}
函数f(a){
返回a.length==0?[]:a.shift()+f(转置(a).reverse());
} 

log(f([[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7])[1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16]
,现在输出是逗号分隔的,并且以一种奇怪的方式?嘿@AdamCobain——我也注意到了这一点。请参阅第二个代码段。
function transpose(a) {
    return a.length === 0 ? a : a[0].map((col, i) => a.map((row) => row[i]))
}

function f(a) {
    return a.length === 0 ? [] : a.shift + f(transpose(a).reverse());
} 

f([[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]);