课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文 (2)

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

程序源代码:

//信1605-2 张晨阳 20160955
/*
* 设计目的:使用递归的方法用组合数递推公式计算组合数。
*/
package homework1;

import java.math.BigInteger;//引入BigInteger类包
import java.util.Scanner;//引入Scanner类包

public class Homework3
{
public static void main(String[] args)
{
System.out.print("请输入组合数中n的值:");
Scanner input=new Scanner(System.in);//为Scanner类创建对象input,调用System.in传参
int n=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到n中
System.out.print("请输入组合数中k的值:");
int k=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到k中
while(n<0||k<0||n<k)//判断n,k的值是否合理
{
System.out.print("输入错误,请重新输入n和k的值:");
n=input.nextInt();
k=input.nextInt();
}
System.out.print("组合数的结果为:"+N(n,k));//调用N方法
}
public static BigInteger N(int n,int k)//用递归的方法借助组合数递推公式求组合数
{
if(n==k||k==0)
{
return BigInteger.valueOf(1);
}
else
{
BigInteger[][] a=new BigInteger[n+1][];//创建并为二维数组开辟行空间
for(int i=0;i<=n;i++)
{
a[i]=new BigInteger[n+1];//为每个行空间分别开辟列空间
}
a[n][k]=N(n-1,k-1).add(N(n-1,k));//递归调用并求和
return a[n][k];
}
}

}

结果截图:

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

课后作业2:用递归编程解决汉诺塔问题 程序设计思想:

  假设只有一个盘子,那么只需实现 A->C 这个动作;

  如果有两个盘子,那么需要

  (1)A->B;

  (2)A->C;

  (3)B->C;

  如果有三个盘子,可以将前两个盘子看作一个盘子,对两个盘子重复以上三个步骤,于是得到N个盘子的递归算法,递归结束的条件是N=1;

程序流程图:

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

程序源代码:

//信1605-2 张晨阳 20160955
/*
* 设计目的:递归调用编程解决汉诺塔问题。
*/
package homework1;

import java.util.Scanner;//引入Scanner类包

public class Homework4
{
public static void main(String[] args)
{
System.out.print("请输入盘子数n的值:");
Scanner input=new Scanner(System.in);//为Scanner类创建对象input,调用System.in传参
int n=input.nextInt();//调用input对象的方法输入并将输入的字符串转化为整型存到n中
moveDish(n, \'A\', \'B\', \'C\'); //调用moveDish方法
}
public static void moveDish(int l, char f, char i, char t) //创建moveDish方法
{
if (l == 1)
{
System.out.println("从" + f + " 移动盘子" + l + " 到" + t);
} else {
moveDish(l - 1, f, t, i);
System.out.println("从" + f + " 移动盘子" + l + " 到" + t);
moveDish(l - 1, i, f, t);
}
}
}

结果截图:

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

课后作业3:使用递归方式判断某个字符串是否回文 程序设计思想:

字符串直接调用Scanner输入即可,这道题目重点在于判断是否为回文字符串的方法构建,用str.length()判断长度,str.charAt()接收字符,判断是否为回文字符串,找好对应位置是关键,a=str.length()-n, b=str.length()-(a+1),两者一个从头开始,一个从尾部开始,相向而行,运用递归算法判断对应位置的值是否一样,当两者一样,进行一次确定,只有一个字符就是回文数。

程序流程图:

课程作业03:用递归方法计算组合数、解决汉诺塔问题、判断某个字符串是否回文

程序源代码:

//信1605-2 张晨阳 20160955
/*
* 设计目的:使用递归方式判断某个字串是否回文。
*/
package homework1;

import java.util.Scanner;//引入Scanner类包

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwffd.html