01、

一、设计思想:

第一种使用n!的公式直接计算,利用递归方法求n!

第二种使用递推的公式,利用递归返回求和。

二、程序流程图

java 作业 java设计作业_递归

三、源代码

import java.util.*;
import javax.swing.JOptionPane; 
public class yanghuisanjiao {
 public static long fact(int k,int n){
 if(k==0||n==0)
 return 1;
 if(n<k)
 return 0;
 if(n==k)
 return 1;
 return fact(k-1,n-1)+fact(k,n-1);
 }
 public static long jiecheng(int i){
 if(i==1||i==0)
 return 1;
 else
 return i*jiecheng(i-1);

 }
 public static void main(String[] args){
 String n1,n2;
 int i,j;
 Scanner input=new Scanner(System.in);
 n1=JOptionPane.showInputDialog( "输入k的值:" );
 n2=JOptionPane.showInputDialog( "输入n的值:" );
 i= Integer.parseInt(n1); 
 j= Integer.parseInt(n2);
 JOptionPane.showMessageDialog(
 null,"利用阶乘计算:" +jiecheng(j)/(jiecheng(i)*jiecheng(j-i)));
 JOptionPane.showMessageDialog(
 null,"利用杨辉三角计算:" +fact(i,j));
 }
}

四、结果

java 作业 java设计作业_java_02

java 作业 java设计作业_System_03

java 作业 java设计作业_System_04

java 作业 java设计作业_递归_05

02、

一、设计思想

A、B、C三座塔,将A上的圆盘全部移动到C上并且大的在下面。假如A上有n个圆盘,则需要以B为辅助塔,可以将n-1个圆盘移动到B,将第n个移动到C塔,然后以A为辅助塔,将n-1个圆盘移动到C上,依次递推。直到第1个圆盘移动到C上。利用递归方法,当圆盘个数>1时,对n-1个圆盘进行操作:以C为辅助塔将A上面n-1个移动到B上去,将最大的一个盘从A移动到C,以A为辅助塔将B上n-1个移动到C上去。直到n=1结束。

二、程序流程图

java 作业 java设计作业_System_06

 

 

三、源代码

import java.util.Scanner;
public class hannuota { /**
 * @param args
 */
 public static void hannuo(int n,char a,char b,char c){ //递归实现汉诺塔
 if(n==1){ //一个盘子可以直接移动
 hannuota.move(a,c);
 }
 else{ //对N-1个盘子进行操作
 hannuo(n-1,a,c,b); // 递归 以C为辅助塔将A上面n-1个移动到B上去
 hannuota.move(a,c); //将最大的一个盘从A移动到C
 hannuo(n-1,b,a,c); //递归 以A为辅助塔将B上n-1个移动到C上去
 }
 }
 //移动指向
 public static void move(char x,char y){
 System.out.println(x+"-->"+y); 
 }
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 char a='A',b='B',c='C';
 int n;
 Scanner input=new Scanner(System.in);
 System.out.println("请输入盘子的个数:");
 n=input.nextInt();
 System.out.println("移动步骤:");
 hannuota.hannuo(n,a,b,c);
 }
}

四、结果

java 作业 java设计作业_递归_07

03、

一、设计思想

是否为回文,则需要判断首尾对应字符是否相同。当字符长度为0或1时为true。当长度大于1时,判断0和length-1处的字符是否相同,相同则进行首+1、尾-1返回此函数。如此重复。

二、流程图

java 作业 java设计作业_java_08

三、源代码

import java.util.*;
public class palindrome { /**
 * @param args
 * @return 
 */
 public static boolean ispalindrome(String a,int i,int j){
 if(a.length()==0||a.length()==1) //递归结束语句
 return true;
 if(i==j) //递归结束语句
 return true;
 else if(a.charAt(i)==a.charAt(j)) {
 return ispalindrome(a,i+1,j-1); //递归判断
 }
 else
 return false;
 }
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 String s=""; //定义空字符串
 Scanner input=new Scanner(System.in);
 System.out.println("请输入字符:"); 
 s=input.next();
 int i=0;
 int j=s.length()-1;
 if(palindrome.ispalindrome(s,i,j))
 System.out.println(s+" 是回文");
 else
 System.out.println(s+" 不是回文");

 }}

四、结果

java 作业 java设计作业_java_09