定义:方法自身调自身
递归调用规则:
1.当程序执行一个方法时,会开辟一个新空间(栈)
2.每个空间里的变量都是独立的
递归实现八皇后:
1.每次需要判断当前棋子是否与其他棋子冲突。
2.棋盘是8*8的,有一个循环遍历所有行,内部再有一个循环遍历每行的每一列。每次遍历都要判断是否与棋盘上的棋子冲突。
3.然后里面递归调用,每次行加一(从0行开始),因为递归调用会一直向里面递归,也就是会遍历到所有行,然后匹配列。到达最大行如果不能匹配,会返回到上一层,上一层又会开始匹配当前行其它列的下一层是否匹配。以此类推。
public class Queue8 {
int max = 24;
int[] jiefa = new int[max];
public static void main(String[] args) {
Queue8 queue8 = new Queue8();
queue8.jisuan(0);
}
public void jisuan(int n){
if (n == max){
show();
return;
}
for (int i = 0 ; i < max ; i++){
jiefa[n] = i;
if (isclash(n)){
jisuan(n+1);
}
}
}
public void show(){
for (int i = 0 ; i < jiefa.length ; i++){
System.out.print(jiefa[i]+"\t");
}
System.out.println();
}
public boolean isclash(int n){
for (int i = 0; i < n; i++) {
if (jiefa[i] == jiefa[n] || Math.abs(n - i) == Math.abs(jiefa[n] - jiefa[i])){
return false;
}
}
return true;
}
}