Ошибка неперехваченного типа: b не определено. Как устранить такие ошибки?

#javascript

#javascript

Вопрос:

Я решал задачу Эйлера № 48 и пришел к решению- . В основном я пытался вычислить собственные полномочия, сохраняя их цифры в массиве. Ссылка на вопрос https://projecteuler.net/problem=48 Однако я получаю неожиданную ошибку. Отображаемое сообщение об ошибке Uncaught error b is undefined

 function selfPower(n,b)
{
    var carry,i=1,j;
    b[0][n-1]=1;
    while(i<=n)
    {
        carry=0,j=0;
        while(b[j])
        {
            b[j][n-1]=b[j][n-1]*n carry;
            carry= Math.floor(b[j][n-1]/10);
            b[j][n-1]%=10;
            j  ;
        }
        while(carry>0){
            b[j][n-1]=carry;
            carry=Math.floor(b[j][n-1]/10);
            b[j][n-1]%=10;
            j  ;
        }
        i  ;
    }
}
var a=[][1000];
var str="";
for(i=1;i<=1000;i  ){
    selfPower(i,a);
}
for(i=0;i<10;i  ){
    for(j=1;j<1000;j  )
    a[i][0] =a[i][j];

    a[i][0] =carry;
    carry=Math.floor(a[i][0]/10);
    a[i][0]%=10;
    str=a[i][0] str;
}
document.getElementById('output').textContent= str;
  

Однако я получаю сообщение об ошибке в строке № 4, дающее Uncaught Typeerror: b is undefined.
Как я могу это решить?

Комментарии:

1. Каким вы ожидаете результата [][1000] ?

Ответ №1:

Их недостаток в том, как массив был инициализирован в приведенном выше коде

Если вы хотите иметь доступ к матрице, например, matrix[i] [j]

Я считаю наиболее удобным инициализировать его в цикле.

 var matrix = [],
    cols = 3;

//init the grid matrix
for ( var i = 0; i < cols; i   ) {
    matrix[i] = []; 
}
  

это даст вам [ [], [], [] ]

таким образом, matrix [0] [0] matrix [1][0] возвращает undefined, а не ошибку «Uncaught TypeError: невозможно установить свойство ‘0’ для undefined»

Итак, если вы перепишете код, он будет

 var a=[]
var i,j;
for(i=1;i<=1000;i  ){
    a[i-1]=[];
    a[i-1][0]=1;
    selfPower(i,a);
}
  

Это решит проблему