作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我是一名优秀的程序员,十分优秀!