作为家庭作业,我被指派制作一个静态方法,计算将多米诺骨牌片放入2×N表内的变化量。
规则: - 它必须是递归的。 - 没有支持方法,但重载是可以的。 - 没有静态变量 - 没有支持数组
这是我到目前为止所做的:
public static int domino(int n, int m) {
int[][] board = new int[m][n];
int sum = 0;
System.out.println("##Checking c2:");
if (n >= 2) {
System.out.println("fitting a c2");
sum += Ex14.domino(n-2,m,sum);
}
else {
sum++;
System.out.println("can't fit a c2");
}
System.out.println("##Checking c1:");
if (n >= 1) {
System.out.println("fitting a c1");
sum += Ex14.domino(n-1,m, sum);
}
else {
sum++;
}
return sum;
}`
这是重载方法:
public static int domino(int n,int m,int sum) {
int[][] board = new int[m][n];
if (n >= 2) {
System.out.println("fitting a c2");
Ex14.domino(n-2,m,sum);
}
if (n>= 1) {
System.out.println("fitting a c1");
Ex14.domino(n-1,m,sum);
}
else {
sum++;
System.out.println("Current Sum is: " + sum);
}
return sum;
}
代码的作用是检查它是否可以添加c2(2列片段)或c1(1片段片段)并使用较小的表调用自身。 一旦它不再适合c1或c2,由于N低于1,它会加1(和++)。
由于某种原因,它适用于2x2表,但不适用于2x3或2x4。我添加了"拟合c1 / 2"和"当前总和"调试问题在哪里,它似乎不会运行sum ++,即使它到达它。
任何提示?