对不起,我不确定标题是否正确,如果不正确,一旦有人告诉我这叫什么,我会更正它。如您所知,我是编程新手...
我想完成以下任务: 我有一个周期:
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. 如果解释不当,我很抱歉......
最佳答案
- 在您的问题中,您只请求从左到右的主要对角线输出,所以我假设这是您的唯一目标。
- 此外,您没有指定矩阵是否始终为正方形;我假设是。
- 最后,您没有指定该矩阵如何准确存储在变量中。我假设我们正在谈论一个二维数组。
开始吧:
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/