数字笔画输入:JAVA中怎么进行递归调用

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 13:16:21
import java.util.*;
public class Chessboard {
public Chessboard(int tr,int tc,int dr,int dc,int size) {
if(size==1) return;
int t=tile++,s=size/2;// L型骨牌号// 分割棋盘

// 覆盖左上角子棋盘
if(dr<tr+s&&dc<tc+s)
// 特殊方格在此棋盘中
this.Chessboard(tr,tc,dr,dc,s);
else{// 此棋盘中无特殊方格
// 用 t 号L型骨牌覆盖右下角
board[tr+s-1][tc+s-1]=t;
// 覆盖其余方格
Chessboard(tr,tc,tr+s-1,tc+s-1,s);}
// 覆盖右上角子棋盘
if(dr<tr+s&&dc>=tc+s)
// 特殊方格在此棋盘中
Chessboard(tr,tc+s,dr,dc,s);
else{// 此棋盘中无特殊方格
// 用 t 号L型骨牌覆盖左下角
board[tr+s-1][tc+s]=t;
// 覆盖其余方格
Chessboard(tr,tc+s,tr+s-1,tc+s,s);}
// 覆盖左下角子棋盘
if(dr>=tr+s&&dc<tc+s)
// 特殊方格在此棋盘中
Chessboard(tr+s,tc,dr,dc,s);
else{// 用 t 号L型骨牌覆盖右上角
board[tr+s][tc+s-1]=t;
// 覆盖其余方格
Chessboard(tr+s,tc,tr+s,tc+s-1,s);}
// 覆盖右下角子棋盘
if(dr>=tr+s&&dc>=tc+s)
// 特殊方格在此棋盘中
Chessboard(tr+s,tc+s,dr,dc,s);
else{// 用 t 号L型骨牌覆盖左上角
board[tr+s][tc+s]=t;
// 覆盖其余方格
Chessboard(tr+s,tc+s,tr+s,tc+s,s);}

}
public static void main(String[]args){
int[][] board=new int[6][6];
int tile=0;
int i=0,j=0;
Chessboard(0,0,3,3,6);
for(i=0;i<=5;i++)
for(j=0;j<=5;j++)
System.out.println(board[i][j]);

}
}
上面这段程序是做棋盘覆盖的,但是很多错误希望哪个大哥能指点小弟