实验2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验2相关的知识,希望对你有一定的参考价值。
一、 使用计算机计算组合数
1、 设计思想:建立二维数组表示组合数,利用杨辉三角关系,用递推写出一个函数。
2、 程序流程图
3、程序源代码
package zuheshu;
import java.util.Scanner;
public class Calculate
{
public static int c[][]=new int[100][100];
public static void main(String[] args)
{
// TODO Auto-generated method stub
System.out.println("请输入k,n");
Scanner scanner1=new Scanner(System.in); //组合数的上标
int k=scanner1.nextInt();
Scanner scanner2=new Scanner(System.in); //组合数的下标
int n=scanner2.nextInt();
c[0][0]=1; //初始化
c[1][0]=1;
c[1][1]=1;
System.out.println("组合数的结果是:"+digui(n,k));
}
public static int digui(int n0,int k0)
{
if((k0==n0)||(k0==0))
{
return 1;
}
c[n0][k0]=digui(n0-1,k0)+digui(n0-1,k0-1);
return c[n0][k0];
}
}
4、结果截图:
二、 递归编程解决汉诺塔问题
1、 设计思想:关键在于设计函数,把整个转移,就需要把除最后一个转移到二号位,将最后一位转移到3号位,再将其余转到三号位,每一次都是如此
2、 程序流程图:
3、源程序代码:
package hannuota; import java.util.*;
public class Hnt
{
public static void main(String[] args)
{ // TODO Auto-generated method stub
@SuppressWarnings("resource")
Scanner sc=new Scanner(System.in);
int n;
System.out.println("Please enter the number of your dished(Hanoi Tower):"); //输入塔个数
n=sc.nextInt();
System.out.println("The number of the times you need to move the dishes is:"+new Hnt().hanoiTower(n));
}
public int hanoiTower(int n)
{ if(n==1)
return 1;
else return hanoiTower(n-1)*2+1;
}
}
4、结果截图:
三、使用递归方式判断某个字符串是否是回文
1、设计思想: 输入字符串后,放进数组,对称比对,有不一样的就不是
2、程序流程图:
3、源程序代码:
package digui;
import java.util.Scanner;
public class Huiwen
{ private static int l; //全局变量整型数据
private static char p[]; //全局变量数组
public static void main(String[] args)
{ // TODO Auto-generated method stub
System.out.println("请输入一串字符");
Scanner sc=new Scanner(System.in);
String str; str=sc.nextLine(); //输入字符串
l=str.length(); //令l的值为数组长度
p=str.toCharArray(); //将字符串转换为相应数组,用于比较对应位置字符是否相等。
//从字符数组第一个函数开始比较。因为第一个字符下标为0,所以以0为参数:
if(isPalindrome(0)) //判断
System.out.println(str+" is a palindrome!");
else System.out.println(str+" is not a palindrome!");
}
public static boolean isPalindrome(int n)
{ if(n>=l/2)
return true; //该字串是回文
else if(p[n]==p[l-1-n])
return isPalindrome(n+1);
else return false; //该字串不是回文
}
}
4、结果截图:
以上是关于实验2的主要内容,如果未能解决你的问题,请参考以下文章
2018-2019-2 20175306实验五《网络编程与安全》实验报告
2017-2018-2 20165336 实验四《Android开发基础》实验报告