javascript - 未捕获的类型错误:b 未定义。如何解决此类错误?
问题描述
我正在解决欧拉问题 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.
我该如何解决这个问题?
解决方案
它们是上述代码中数组初始化方式的缺陷
如果您希望能够像这样访问矩阵 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: Cannot set property '0' of undefined”
因此,如果您重写代码,它将是
var a=[]
var i,j;
for(i=1;i<=1000;i++){
a[i-1]=[];
a[i-1][0]=1;
selfPower(i,a);
}
这将解决问题
推荐阅读
- memory - FreeRTOS 堆放置在 DDR 的哪个内存区域(Zynq 700 器件)?
- c - 条件问题
- jquery - 在 onmouseover="swapImage(); 上淡入/淡出
- c++ - 尝试使用公钥验证签名时出现 BERDecodeError
- r - R Shiny - 在 Shiny 模块中使用“session$sendCustomMessage”设置输入值
- paypal - 是否可以使用 paypal 或 Stripe 进行自动付款
- c++ - 循环依赖对象的 C++ 移动构造函数/移动赋值运算符
- excel - 根据另一个单元格excel 2016的单元格颜色更改单元格颜色
- javascript - 样式化的组件,在谷歌浏览器上中断
- dm-script - 在 DigitalMicrograph 中使用内在变量进行图像处理