这是我的代码(方法):
int temp =0;
result=false;
isPossible(temp);
if(result) System.out.println("YES");
else System.out.println("NO");
}} private static void isPossible( int i) {
if(i>n || i+m >= n || i==n-1){
result =true;
return;
}
if(visitedArray[i] == true){
System.out.println(A[i]+"d");
return;
}
visitedArray[i]= true;
if (i+1 < n && A[i+1]==0){
System.out.println(A[i]+"a");
isPossible(i+1);
}
if (i-1>=0 && A[i-1]==0){
System.out.println(A[i]+"b");
isPossible(i-1);
}
if(A[i+m]==0 && i+m < n){
System.out.println(A[i]+"c");
isPossible(i+m);
}
}
输出是:
0c 0b 0a 0d 0c YES
我想知道为什么即使在执行返回之后也会执行最后一个if循环,也就是为什么输出打印&#39; 0c&#39;即使在&#39; 0d&#39;即退货已被执行?
答案 0 :(得分:1)
问题是,在您打印a或b的情况下,您再次调用isPossible
方法,但是您没有返回。那个程序的流程可以是:
不知道YES
打印的来源,未显示在您发布的代码中,但您明白了