如何在不重复类似的反向计算的情况下制作乘法表,x y = z y = z y x = z?如果其他操作符,我尝试使用其他情况,但它一无所获。我的代码:
for (var x = 1; x <= 10; x++) {
for (var i = 1; i <= 10; i++) {
var result = x * i;
if (result !== result){
console.log(x + ' * ' + i + ' = ' + result);
}
else {
}
}
}
非常简单:
for (var x = 1; x <= 10; x++) {
for (var i = x; i <= 10; i++) {
var result = x * i;
console.log(x + ' * ' + i + ' = ' + result);
}
}
在第二行上将i = 1
替换为i = x
,以便以后开始并忽略了它已经进行的所有先前计算。
例如:当您计算表 3 时,您可以从 3*3*3 开始,就像您已经做过 3*1(1*3)带有表 1 和 3*2(2*3)带表 2
您可以跟踪在哈希表中已经完成的计算。如果已经在表中 - 跳过该计算。这样的东西:
var doneCalculations = {};
for (var x = 1; x <= 10; x++) {
for (var i = 1; i <= 10; i++) {;
if (doneCalculations[i+'x'+x]) continue;
doneCalculations[x+'x'+i] = true;
var result = x * i;
console.log(x + ' * ' + i + ' = ' + result);
}
}
使用第一个循环变量启动第二个循环
for (var x = 1; x <= 10; x++) {
for (var i = x; i <= 10; i++) {
var result = x * i;
console.log(x + ' * ' + i + ' = ' + result);
}
}
您要打印完整的乘法表对于x,1至10的每个值10>
在计算中,记忆或记忆是一种优化技术,主要用于通过存储昂贵的功能调用的结果并在再次发生相同输入时返回缓存结果来加快计算机程序的速度。
var doneCalculations = {};
var calculations = {};
var doneCalculations = {};
for (var x = 1; x <= 10; x++) {
for (var i = 1; i <= 10; i++) {;
if (doneCalculations[i+'x'+x]) {
result = calculations[i+'x'+x]
}
else {
doneCalculations[x+'x'+i] = true;
var result = x * i;
calculations[x+'x'+i] = result;
}
console.log(x + ' * ' + i + ' = ' + result);
}
}
console.log(calculations)