方法作业
- 设计思路
建立组合数,递推,递归函数,在主函数中进行调用,
- 流程图
- 源代码
import java.util.Scanner;
public class Yanghui {
public int Jiecheng(int i){
if(i==1||i==0)
{
return 1;
}
return i*Jiecheng(i-1);
}
public int Ditui(int i,int j)
{
int a[][]=new int[100][100];
a[0][0]=1;
int result=1;
for(int p=1;p<100;p++)
for(int q=0;q<=p;q++)
{
if(q==0||p==q)
{
a[p][q]=1;
}
else
a[p][q]=a[p-1][q-1]+a[p-1][q];
if(p==i&&q==j)
{
result=a[p][q];
break;
}
}
return result;
}
public int Zuhe(int i,int j)
{
if(i==0||j<=1||i==j)
{
return 1;
}
return Zuhe(i-1,j-1)+Zuhe(i-1,j);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Yanghui y=new Yanghui();
System.out.println("请输入组合数下标和行标");
Scanner input=new Scanner(System.in);
int hang=input.nextInt();
int lie=input.nextInt();
int fenzi,fenmu;
fenzi=y.Jiecheng(hang);
fenmu=y.Jiecheng(lie)*y.Jiecheng(hang-lie);
System.out.println("阶乘结果:"+fenzi/fenmu+" ");
System.out.println("递推计算结果:"+y.Ditui(hang, lie)+" ");
System.out.println("递归计算结果:"+y.Zuhe(hang+1, lie+1)+" ");
}
}
- 截图
- 设计思路
移动n个盘子经历(2~n-1)步,调用递归hanoi,终止条件为参数n的值是1,执行xày的操作,
- 流程图
- 源代码
import java.util.Scanner;
public class Hanoi {
public void Hnt(int a,char one,char two,char three){
if(a==1)
move(one,three);
else
{
Hnt(a-1,one,three,two);
move(one,three);
Hnt(a-1,two,one,three);
}
}
public void move(char x,char y){
System.out.println(x+"->"+y);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hanoi h=new Hanoi();
Scanner input=new Scanner(System.in);
System.out.print("请输入初始盘子数量:");
int num=input.nextInt();
h.Hnt(num,'1','2','3');
}
}
- 截图
- 设计思路
输入字符先判断长度,符合在判断首字符和尾字符,在进行下一个字符的判断。
- 流程图
- 源代码
import java.util.Scanner;
public class Huiwen {
public int Hui(String str,int length,int star,int stop){
if(length==0||length==1)
{
return 1;
}
if(str.charAt(star)!=str.charAt(stop))
{
return 0;
}
else
{
return Hui(str,length-2,star+1,stop-1);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
String s=input.nextLine();
Huiwen hui=new Huiwen();
int l=s.length();
if(hui.Hui(s, l, 0, l-1)==1)
{
System.out.println("是回文字符串");
}
else
System.out.println("不是回文字符串");
}
}
- 截图