你好!我写了一个脚本,理论上,应该从左侧开始生成一个螺旋形的 3x3 矩阵。一切都会好的,但我收到一个错误,即数字变量未定义或等于零。请看我的代码。也许我在某个地方犯了一个错误。我不知道怎么了。如果您找到任何其他门框,我将不胜感激。
我按照建议重写了代码。形成了一个3x3的矩阵,但是填错了(
var numbers = [1,2,3,4,5,6,7,8,9];
var dimension = 3;
var matrix = [];
for(var d = 0; d<dimension; d++){
matrix[d] = [];
}
makeMatrix(numbers, dimension, matrix);
function makeMatrix(numbers, dimension, matrix){
for(var n = 0; n < numbers.length; n++){
var i = 0;
var j = 0;
var number = numbers[n];
moveDown(i, j, matrix, number);
}
console.log(matrix);
}
function moveDown(i, j, matrix, number){
for(j; j<dimension; j++){
matrix[i][j]=number;
if(matrix[i][j+1]!="" && matrix[i+1][j]==""){
i = i+1;
moveRight(i, j, matrix, number);
}
}
}
function moveRight(i, j, matrix, number){
for(i; i<dimension; i++){
matrix[i][j]=number;
if(matrix[i+1][j]!="" && matrix[i][j-1]==""){
j = j-1;
moveUp(i, j, matrix, number);
}
}
}
function moveUp(i, j, matrix, number){
for(j; j>=0; j++){
matrix[i][j]=number;
if(matrix[i][j-1]!="" && matrix[i-1][j]==""){
i = i-1;
moveLeft(i, j, matrix, number);
}
}
}
function moveLeft(i, j, matrix, number){
for(i; i>=0; i++){
matrix[i][j]=number;
if(matrix[i-1][j]!="" && matrix[i][j+1]==""){
dimension = dimension/2;
makeMatrix(numbers, dimension);
}
}
}

答案在 C 语言中,你可以重做它,它可能会派上用场。代码不是最优的。
结果:
上面的代码不是最优的,但下面是更优的,它不依赖于已经输入到矩阵中的数据,因此它可以用来用任意值填充矩阵,包括零(虽然我在这里有指针,但我没有'不知道如何在 JS 中重复;是否有任何链接)。而且已经没有评论了。工作过的人会明白
我想是这样的。你也可以缩小,但更明显。
通过递归解决