以下是我的java代码
import java.util.Scanner;
public class 马踏棋盘 {
public static int[][] fangXiang = { { -2, 1 }, { -1, 2 }, { 1, 2 },
{ 2, 1 }, { 2, -1 }, { 1, -2 }, { -1, -2 }, { -2, -1 } };
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int[][] qiPan = new int[8][8];
int i, j;
for (i = 0; i < 8; i++) {
for (j = 0; j < 8; j++) {
qiPan[i][j] = 0;
}
}
System.out.println("输入初始位置:");
int x = scanner.nextInt();
int y = scanner.nextInt();
qiPan[x - 1][y - 1] = 1;
searchPath(x - 1, y - 1, qiPan, 2);
System.out.println("寻找路径结束!!!");
}
public static void searchPath(int x, int y, int[][] qiPan, int bu) {
System.out.println("通过函数寻找路径中。。。。。。");
System.out.println("当前起始位置为:" + x + " " + y);
System.out.println("当前步数为:" + bu);
int i, j, k, l, m;
int xTemp, yTemp;
int[][] qiPanTemp = new int[8][8];
int buTemp;
// 对新创建的棋盘进行赋值
for (j = 0; j < 8; j++) {
for (k = 0; k < 8; k++) {
qiPanTemp[j][k] = qiPan[j][k];
}
}
// 分别对8个方向进行判断
for (i = 0; i < 8; i++) {
xTemp = x + fangXiang[i][0];
yTemp = y + fangXiang[i][1];
System.out.println("尝试第" + i + "个方向");
System.out.println("尝试的位置为" + xTemp + " " + yTemp);
if (xTemp < 0 || xTemp >= 8 || yTemp < 0 || yTemp >= 8) {
} else {
if (qiPanTemp[xTemp][yTemp] != 0) {
} else {
buTemp = bu;
qiPanTemp[xTemp][yTemp] = buTemp;
buTemp++;
if (buTemp < 65) {
searchPath(xTemp, yTemp, qiPanTemp, buTemp);
} else {
System.out.println("路径为。。。。。。。。。。。。。。。。。。。。。。。。。。。。");
for (l = 0; l < 8; l++) {
for (m = 0; m < 8; m++) {
if (qiPanTemp[l][m] < 10) {
System.out.print(0);
System.out.print(qiPanTemp[l][m] + " ");
} else {
System.out.print(qiPanTemp[l][m] + " ");
}
}
System.out.println();
}
System.out.println();
}
qiPanTemp[xTemp][yTemp] = 0;
}
}
}
}
}
我不明白为什么会产生死循环呢?求助大神啊