java - Java中的递归乘法

标签 java

对不起,我不确定标题是否正确,如果不正确,一旦有人告诉我这叫什么,我会更正它。如您所知,我是编程新手...

我想完成以下任务: 我有一个周期:

for(int i=0; i < this.matrix.length; i++)

我将有一个像这样的矩阵:

1, 2, 2
2, 2, 3
0, 1, 2

我想将对角元素相乘 1*2*2 我知道如何在循环的每一步获取这些元素,但是我如何使用临时变量,每一步都将乘以新元素?或者这是不可能的?

例如我创建了一个变量:

double temp;

并且每个循环步骤我都希望新值乘以旧值,但保留值,不确定我是否解释得很好。 但是如果我们使用这个矩阵,我会想要这样的东西:

temp = 1;

下一步吧

temp = 2;

下一步

temp = 4;

我自己尝试这样做,但最终会得到错误的结果,我知道我做错了乘法,因为当我将矩阵的 2 2 元素更改为 3 而不是 2 时,我的最终结果将是 9 6. 如果解释不当,我很抱歉......

最佳答案

  1. 在您的问题中,您只请求从左到右的主要对角线输出,所以我假设这是您的唯一目标。
  2. 此外,您没有指定矩阵是否始终为正方形;我假设是。
  3. 最后,您没有指定该矩阵如何准确存储在变量中。我假设我们正在谈论一个二维数组。

开始吧:

public static void main (String[] args) throws Exception {
    int[][] matrix = new int[3][];
    matrix[0] = new int[] {1, 2, 2};
    matrix[1] = new int[] {2, 2, 3};
    matrix[2] = new int[] {0, 1, 2};

    int result = 1;
    for (int i=0; i<matrix.length; i++) {
        result *= matrix[i][i];
    }
    System.out.println(result);
}

编辑:如果您还想包括从右到左:

public static void main (String[] args) throws Exception {
    int[][] matrix = new int[3][];
    matrix[0] = new int[] {1, 2, 2};
    matrix[1] = new int[] {2, 2, 3};
    matrix[2] = new int[] {0, 1, 2};

    int resultL2R = 1;
    int resultR2L = 1;
    for (int i=0; i<matrix.length; i++) {
        resultL2R *= matrix[i][i];
        resultR2L *= matrix[i][matrix.length-1-i];
    }
    System.out.println("left-to-right: " + resultL2R);
    System.out.println("right-to-left: " + resultR2L);
}

关于java - Java中的递归乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45372939/

相关文章:

java - 如何使用 java servlet 保护 HttpSession 中的 session 变量

java - 使用 Ebean 使用 SUM、MIN、MAX 等进行 ORDER BY

java - Java 中的 PatternSyntaxException(匹配 Windows 注册表路径)

java - 在 Java 中设置文件下载的内容类型

java - 在 Java 中使用 WEKA 分类器模型对实时文本进行分类

java - 如果父类/接口(interface)发生变化,类的字节码是否会发生变化?

java - "A synchronized block in Java is synchronized on some object"是什么意思..?

java - 如何删除 char 数组中的空白位置?

java - 使用 Wicket 口更新文本区域

java - 如何使用正则表达式匹配行大小?