3.1程序设计思想:调用递归函数,终止条件为参数N=1;移动盘子时,利用两个函数,将盘子移动,利用中间的b柱子作为跳板,递归函数求出具体步骤,引用另一个函数具体输出盘子移动的步骤.
3.2源程序代码:
1 //信1605-3 20163429 刘瑞欣 2 import java.util.Scanner; 3 public class Digui 4 { 5 static private int number = 0; 6 public static void main(String[] args) 7 { 8 Scanner in = new Scanner(System.in ); 9 char A = 'A'; 10 char B = 'B'; 11 char C = 'C'; 12 System.out.println("输入盘子数"); 13 int num = in.nextInt(); 14 solveHanoiTower(num,A,B,C); 15 in.close(); 16 } 17 private static void move(int num,char start,char end) 18 { 19 number++; 20 System.out.println("第"+number+"步操作是将盘子从:"+start+"-->"+end); 21 } 22 private static void solveHanoiTower(int num,char A,char B,char C) 23 { 24 if(num==1) 25 { 26 move(1,A,C); 27 } 28 else 29 { 30 solveHanoiTower(num-1,A,C,B); 31 move(num,A,C); 32 solveHanoiTower(num-1,B,A,C); 33 } 34 } 35 }
3.3结果截图:
4.1设计思想:定义字符串储存想要的验证的字符串,定义一个数组储存,将两个数组首尾进行比较,结束条件为比较到数组的中值处
4.2源程序代码:
//信1605-3 20163429 刘瑞欣 import java.util.Scanner; public class huiwen { public static void main(String[] args) { Scanner put =new Scanner(System.in); System.out.println("输入字符串:"); String a = put.nextLine();//定义字符串 char[] ch = new char[a.length()]; for(int i = 0;i<a.length();i++) { ch[i] = a.charAt(i); }//将字符穿赋值给数组 if(zifu(ch,ch.length)==0)//引用函数体 { System.out.println("该字符串不是回文!"); } else { System.out.println("该字符串是回文!"); }// put.close(); } private static int zifu(char[] c,int i) { int size = c.length; if(i == size/2) { return 1; } if(c[size - i] == c[i-1]) { return zifu(c,i-1); } else return 0; } //递归函数判断字符串是否为回文数 }
4.3结果截图: