gpt4 book ai didi

java - 如何自动化循环函数工作 (x) 次/使其递归工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:00 24 4
gpt4 key购买 nike

我想从邻接矩阵创建一个距离矩阵(即从函数输入邻接矩阵,它计算出每个顶点之间有多少个顶点并将其输出到矩阵中)示例如下。

/image/dLCWp.jpg

我使用 for 循环解决了这个问题。该程序可以生成正确的矩阵,但是,它最多只能生成 3 的距离。我的 for 循环遵循一种模式。我怎样才能在不复制 1000 次的情况下多次复制这个过程?

The basic premise is: if [i][j]=1 and [j][k]=1 then [i][k]=2

有更好的方法吗?

static void distanceMatrix(int distance, int result[][], int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (adjMatrix[i][j] == 1 && (result[i][k] > 1 || result[i][k] == 0) && distance >= 1 && i != k) {
result[i][j] = 1;
for (int k = 0; k < size; k++) {
if ((adjMatrix[j][k] == 1) && (result[i][k] > 2 || result[i][k] == 0) && distance >= 2
&& i != k) {
result[i][k] = 2;
for (int l = 0; l < size; l++) {
if ((adjMatrix[k][l] == 1) && (result[i][l] > 3 || result[i][l] == 0) && distance >= 3
&& i != l) {
result[i][l] = 3;
}
}
}
}
}
}
}
}

For reference, the parameter inputs are as below:

distance: the maximum distance that should be calculated (ie. if input is 2, then only distances of 0,1,2 are calculated)

result[][]: the empty matrix for the distance matrix to be put into

size: the number of total vertices (matrix will be size x size)

最佳答案

您基本上可以将所有重复的代码放入递归方法中。重要的是,此方法具有必要的参数,以跟踪深度,以及在代码重复部分之外设置的值(例如 i)。

static void recursiveFunction(int distance, int matrix[][], int size, int row, int prevRow, int depth) {
for (int i = 0; i < size; i++) {
if ((adjMatrix[prevRow][i] == 1) && (matrix[row][i] > depth || matrix[row][i] == 0)
&& row != i) {
matrix[row][i] = depth;
if (depth < distance) {
recursiveFunction(distance, matrix, size , row, i, depth +1);
}
}
}
}

static void distanceMatrix(int distance, int result[][], int size) {
for (int i = 0; i < size; i++) {
recursiveFunction(distance, result, size, i, i, 1);
}
}

请原谅函数和参数的无创意名称。

关于java - 如何自动化循环函数工作 (x) 次/使其递归工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55754892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com