如何在不重复x * y = z,y * x = z的情况下使用console.log乘法表

时间:2016-12-15 10:46:12

标签: javascript

如何制作乘法表而不重复反向计算,例如x y = z y x = z?我尝试使用if = =运算符,但它没有显示任何内容。我的代码:

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 {

        }
    }
}

4 个答案:

答案 0 :(得分:5)

非常简单:

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,以便稍后启动并忽略之前已执行的所有计算。

EG:当您计算表格 3 时,您可以从 3 * 3 开始,因为您已经做过 3 * 1(1 * 3)表 1 3 * 2(2 * 3) 2

答案 1 :(得分:0)

您可以跟踪已经在哈希表中完成的计算。如果它已经在表中 - 跳过该计算。像这样:

import lombok.Builder;
import lombok.Data;
import lombok.NonNull;

@Data
@Builder(builderMethodName = "privateBuilder")
public class Person {
    @NonNull
    private String name;
    @NonNull
    private String surname;
    private int age;//optional

public static Url safeBuilder() {
    return new Builder();
}

interface Url {
    Surname name(String name);
}

interface Surname {
    Build surname(String surname);
}

interface Build {
    Build age(int age);
    Person build();
}

public static class Builder implements Url, Surname, Build {
    PersonBuilder pb = Person.privateBuilder();

    @Override
    public Surname name(String name) {
        pb.name(name);
        return this;
    }

    @Override
    public Build surname(String surname) {
        pb.surname(surname);
        return this;

    }

    @Override
    public Build age(int age) {
        pb.age(age);
        return this;
    }

    @Override
    public Person build() {
        return pb.build();
    }
    }
}

答案 2 :(得分:0)

用第一个循环变量

开始第二个循环
for (var x = 1; x <= 10; x++) {
    for (var i = x; i <= 10; i++) {
        var result = x * i;        
            console.log(x + ' * ' + i + ' = ' + result);        
    }
}

答案 3 :(得分:-1)

您希望为x,1到10的每个值打印完整乘法表。使用记忆来避免重新计算

  

在计算,memoization或memoisation中,一种优化技术主要用于通过存储昂贵的函数调用的结果来加速计算机程序,并在再次出现相同的输入时返回缓存的结果。

&#13;
&#13;
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)
&#13;
&#13;
&#13;