博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课后作业
阅读量:6005 次
发布时间:2019-06-20

本文共 3465 字,大约阅读时间需要 11 分钟。

 

课后作业1:

1.程序设计思想

第一种用公式的方法求组合数,利用递归方法,求出阶乘,求出组合数的大小。

第二种是用递推的方法,递推的方法是由前往后递推,利用杨辉三角形找出规律,利用二元数组求出组合数的大小。

第三种是用递归函数的方法,由后往前调用递归公式,利用给出组合数公式,初始化值,求出组合数的大小

2.程序流程图

 

3.程序源代码

 

第一种:

import java.util.Scanner;

import java.lang.Math.*;
import java.math.BigInteger;
public class ZuheNumber{
//组合数公式
public static BigInteger jiecheng(int n)
{
       if(n<0)
{
       System.out.println("输入有误");
}
       if(n==1||n==0)
{
       return BigInteger.valueOf(1);
}
       else
{
       return BigInteger.valueOf(n).multiply(jiecheng((n-1)));
}
}
       public static long calculateN(int n) {
       if(n==1 || n==0){
       return 1;
}
       return n*calculateN(n-1);
}

public static void main(String args[])

{
       System.out.print("请输入组合数的n和k:");
       Scanner scanner1=new Scanner(System.in);//组合数的下标
       int n=scanner1.nextInt();
       Scanner scanner2=new Scanner(System.in);//组合数的上标
       int k=scanner2.nextInt();
       BigInteger x,y,z,d,result;
       x=jiecheng(n);
       y=jiecheng(k);
       z=jiecheng(n-k);
       d=y.multiply(z);//计算k!*(n-k)!的结果
       result=x.divide(d);//计算n!/(k!*(n-k)!)的结果
       System.out.println("组合数的结果是:"+result);//输出运算结果

}

}

第二种:

import java.util.Scanner;

import java.lang.Math.*;
public class ZuheNumber1 {
public static int n;
public static int k;
public static int c[][]=new int[100][100];
ZuheNumber a=new ZuheNumber();
public static void main(String args[])
{
       System.out.print("请输入组合数的n和k:");
       Scanner scanner1=new Scanner(System.in);//组合数的下标
       int n=scanner1.nextInt();
       Scanner scanner2=new Scanner(System.in);//组合数的上标
       int k=scanner2.nextInt();
       c[0][0]=1;//初始化
       c[1][0]=1;//初始化
       c[1][1]=1;//初始化
       for(int i=2;i<=n;i++)
{
       c[i][0]=1;
       c[i][i]=1;//初始化每行 杨辉三角的两边的值
       for(int j=1;j<=i;j++)
{
       c[i][j]=c[i-1][j-1]+c[i-1][j];
}
}
       System.out.println("组合数的结果是:"+c[n][k]);
}
}

第三种:

import java.util.Scanner;

public class ZuheNumber2 {
public static int n;
public static int k;
public static int c[][]=new int[100][100];
public static void main(String args[])
{
       System.out.print("请输入组合数的n和k:");
       Scanner scanner1=new Scanner(System.in);//组合数的下标
       int n=scanner1.nextInt();
       Scanner scanner2=new Scanner(System.in);//组合数的上标
       int k=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];
}
}

第一种截图:

第二种截图:

 

 

第三种截图:

 

课后作业2:

程序设计思想: 递归编程解决汉诺塔问题。用Java实现

程序流程图:

源代码:

import java.util.*;

public class HanoiTower {

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 HanoiTower().hanoiTower(n));

}

public int hanoiTower(int n)
{if(n==1) return 1;
else return hanoiTower(n-1)*2+1;
}

}

程序截图:

课后作业3:

程序设计思想:使用递归方式判断某个字串是否是回文( palindrome )

程序流程图:

源代码:

//Li Cuiyun,October 14,2016.

//用递归方法编程解决汉诺塔问题
package tutorial_3_5;
import java.util.*;

public class HanoiTower {

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 HanoiTower().hanoiTower(n));

}

public int hanoiTower(int n)
{if(n==1) return 1;
else return hanoiTower(n-1)*2+1;
}

}

程序截图:

 

转载于:https://www.cnblogs.com/-wyd/p/7664322.html

你可能感兴趣的文章
jQuery中常用的元素查找方法总结
查看>>
linux设备驱动模型之平台总线实践环节(四)
查看>>
/proc/sys/net/ipv4详解
查看>>
master,regionserver相关的问题java.io.IOException: Connection reset by peer
查看>>
shell中特殊变量含义
查看>>
nginx切割日志脚本(python)
查看>>
ospf在帧中继模式下的不同网络类型
查看>>
[李景山php]每天laravel-20161010|Validator.php-10
查看>>
常用的英语口语日常用语总结1
查看>>
shell高级变量之变量的删除和替换案例
查看>>
CentOS7.4搭建DNS缓存服务器和转发器(四)
查看>>
如何过滤掉文本空白行?
查看>>
iptebles(二)
查看>>
Lync Server 2010的部署系列_第五章 准备 Active Directory 域服务
查看>>
java基本数据类型及运算符小结
查看>>
第一周博客作业
查看>>
Python strip lstrip rstrip使用方法
查看>>
Linux开发工具_1_gcc入门(上)
查看>>
在这里安家了
查看>>
ERP项目更应授人以渔
查看>>