gpt4 book ai didi

java - 如何让代码在递归后只运行一次?

转载 作者:行者123 更新时间:2023-11-30 05:27:17 25 4
gpt4 key购买 nike

hourglassSum(arr) 方法一开始就从 main 方法调用。然后该方法是递归的,直到语句失败。递归之后,执行sumArray的迭代。我以为它只会执行一次。但它并没有像我预期的那样工作。如何让它在递归后只运行一次?

我尝试将标志设置为局部变量。

运行以下代码

static int rowIncrement=0;
static int columnIncrement=0;
static int[] sumArray = new int[16];
static int count=0;
static void hourglassSum(int[][] arr) {
int sum=0;
int size=arr.length/2;
for(int i=rowIncrement;i<size+rowIncrement;i++) {
for(int j=columnIncrement;j<size+columnIncrement;j++) {
sum = sum+arr[i][j];
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
System.out.println(sum);
sumArray[count]=sum;
System.out.println();
columnIncrement++;
if(columnIncrement==(arr.length/2)+1) {
rowIncrement++;
columnIncrement=0;
}
if(rowIncrement<(arr.length/2)+1) {
count++;
hourglassSum(arr);
}
//doubt : is it execute only once.
for(int i=0;i<sumArray.length;i++) {
System.out.println(sumArray[i]+" ");
}
}

最佳答案

你的代码的作用没有解释清楚..您可以在函数调用中添加一个 boolean 对象,并在完成递归时将其设置为 false,请参阅以下内容:

private static void hourglassSum(int[][] arr,Boolean bool) {
int sum = 0;
int size = arr.length / 2;
for (int i = rowIncrement; i < size + rowIncrement; i++) {
for (int j = columnIncrement; j < size + columnIncrement; j++) {
sum = sum + arr[i][j];
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
System.out.println(sum);
sumArray[count] = sum;
System.out.println();
columnIncrement++;
if (columnIncrement == (arr.length / 2) + 1) {
rowIncrement++;
columnIncrement = 0;
}
if (rowIncrement < (arr.length / 2) + 1) {
count++;
hourglassSum(arr,bool);
if(bool){
bool=false;
return;
}
}
System.out.println("out");
//doubt : is it execute only once.
for (int i = 0; i < sumArray.length; i++) {
System.out.println(sumArray[i] + " ");
}
}

注意:调用 hourglassSum(arr,true)

关于java - 如何让代码在递归后只运行一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276166/

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