1、1. 二分搜索的递归和非递归实现算法;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;/用 BufferedReader 进行输出public class Test3_1 public static void main(String args) int list=new int(int)(Math.random()*5)+5;/定义一个随机出现的数组for (int i = 0; i listmind)left=left+1;elseright=right-1;retu
2、rn -1;public static int diGuiBinarySearch(int list,int x,int l,int r) /递归实现!1,r 分别为数组中的首尾元素if(lr)return -1;/返回错误int m=(l+r)/2;/取中和 x 比较if(x=listm)return m;else if(xlistm)/以下为递归中元素的查找操作return diGuiBinarySearch(list, x, l+1, r);elsereturn diGuiBinarySearch(list, x, l, r-1);2.棋盘覆盖的递归实现算法;import java.ut
3、il.Scanner;/用 Scanner输出流进行控制 输出public class Test3_2 private int qipan;/用来表示棋 盘private int qipanSize;/表示棋 盘的大小为2的多少次方private int dr,dc;/棋盘中特殊方格的位置(行号、列号)private int tile;/骨牌标号public Test3_2()qipan=new int11;dr=0;dc=0;qipanSize=0;public Test3_2(int r,int c,int s)int n;n=(int) Math.pow(2, s);if (n=tc+s
4、)/ 特殊方格在此棋盘中chessBoard(tr, tc+s, dr, dc, s);else/ 无特殊方格,用t号骨牌覆盖左下角 qipantr + s - 1tc + s = t;chessBoard(tr, tc+s, tr+s-1, tc+s, s);/ 覆盖左下角子棋 盘if (dr=tr+selse qipantr + stc + s = t;chessBoard(tr+s, tc+s, tr+s, tc+s, s);public static void main(String args)try System.out.println(“请输入特殊方格的横坐 标:“ );Scann
5、er x1=new Scanner(System.in);int x=x1.nextInt();System.out.println(“请输入特殊方格的 纵坐标:“ );Scanner y1=new Scanner(System.in);int y=x1.nextInt();System.out.println(“请输入棋盘的规 格:“ );Scanner s1=new Scanner(System.in);int s=x1.nextInt();System.out.println(“结果为:“ );Test3_2 t1= new Test3_2(x,y,s);t1.chessBoard(0, 0, t1.dc, t1.dr, (int)Math.pow(2,t1.qipanSize);t1.Print(); catch (Exception e) System.out.println(“您输入的数字有 误,请重新输入!“ );