【发布时间】:2016-05-12 09:48:35
【问题描述】:
从 if 和 else.Calee 递归调用相同的方法得到意外的输出(从 sysout 可以看到)。 预期输出:4
调试代码并查看发生了什么。但不能理解太多。请帮忙
public class GetSquares {
/**
* @param args
*/
public static void main(String[] args) {
String rectDimension="5X3";
int noOfSquares=0;
int noOfSq=getNoofSquares(rectDimension,noOfSquares);
System.out.println(noOfSq);
}
public static int getNoofSquares(String rectDimension,int noOfSquares){
int length=Integer.parseInt(rectDimension.split("X")[0]);
int breadth=Integer.parseInt(rectDimension.split("X")[1]);
if(length<breadth){
rectDimension=String.valueOf(breadth-length)+"X"+length;
++noOfSquares;
getNoofSquares(rectDimension, noOfSquares);
}else if(length>breadth){
rectDimension=String.valueOf(length-breadth)+"X"+breadth;
++noOfSquares;
getNoofSquares(rectDimension, noOfSquares);
}else {
noOfSquares=noOfSquares+1;
System.out.println(noOfSquares);
return noOfSquares;
}
return noOfSquares;
}
}
【问题讨论】:
-
实际输出有两行:
4和1。我不知道你在做什么,你在期待什么,你认为什么是错的。 -
我想返回给定矩形中可能的最大正方形数。例如:矩形 5X3。它有正方形 3*3,2*2,1*1,1*1。共4个方格。我在 getNoofSquares 方法的 else 语句中得到了输出(有一个打印 4 的 sysout)。但是当我使用 calee 方法时,我得到 1 作为输出而不是 4