&引用;超过调用堆栈大小“0”;将Ruby代码移植到JavaScript时
这是以顺时针方向绕过二维阵列(矩阵)的函数:() 我尝试用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
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]]);