• 将课程作业01、02、03的设计思想、源程序代码和结果截图整理成一篇博文,发表到你的博客园。


    使用组合数公式利用n!来计算

    设计思想:首先要判断一个数的阶乘如何表达,然后调用方法用组合数公式,最后求出组合数。

    package n的阶乘;

    public class number {
    public static void main(String[] args){
    int a=4;
    int b=5;
    System.out.println("C("+a+","+b+")="+gNum(a,b));
    }
    public static int gNum(int m,int n){
    if(m==0||m==n)
    return 1;
    else return f(n)/(f(m)*f(n-m));
    }
    public static int f(int z){
    if(z==1)
    return 1;
    else return z*f(z-1);
    }
    }

    使用递推的方法用杨辉三角形计算

    设计思想:首先需要构建一个杨辉三角,最后的结果就是杨辉三角形中的一个数,最后输出对应的数就可以

    package 使用递推的方法用杨辉三角形计算;
    import java.util.Scanner;
    import java.math.BigInteger;
    public class Number {

    public static void main(String[] args) {
    @SuppressWarnings("resource")
    Scanner scanner=new Scanner(System.in);
    System.out.println("输入两个数并用空格隔开");
    int n=scanner.nextInt();
    int k=scanner.nextInt();
    BigInteger[][] a=new BigInteger[n][n];
    for(int i=0;i<n;i++) {
    for(int j=0;j<n;j++) {
    if((i==0)&&(j==0))
    a[i][j]=BigInteger.valueOf(1);
    else if(j==0||j==i)
    a[i][j]=BigInteger.valueOf(1);
    else if(j<=i)
    a[i][j]=a[i-1][j-1].add(a[i-1][j]);
    else
    a[i][j]=BigInteger.valueOf(0);

    }
    }

    System.out.println("n!/(k!*(n-k)!)="+a[n-1][k-1]);
    }

    使用递归的方法用组合数递推公式计算

    设计思想:首先定义组合数中的两个数,调用方法,并且在方法中在调用自己,完成递归,最后输出正确的结果。

    package 使用递归的方法用组合数递推公式计算;

    public class Number {
    public static void main(String[] args){
    int a=4;
    int b=5;
    System.out.println("C("+a+","+b+")="+gNum(a,b));
    }
    public static int gNum(int m,int n){
    if(m==0||m==n)
    return 1;
    else return gNum(m-1,n-1)+gNum(m,n-1);
    }
    }

    递归编程解决汉诺塔问题。用Java实现

    设计思想:利用递归,先留一个圆盘,把n-1个圆盘先移动,把最后一个圆盘移到c上,以这样的方法移动。

    public class Number {

    public static void main(String[] args) {
    int disk = 5;
    move(disk, 'A', 'B', 'C');
    }

    private static void move(int topN, char from, char inter, char to) {
    if (topN == 1) {
    System.out.println("Disk 1 from " + from + " to " + to);
    } else {
    move(topN - 1, from, to, inter);
    System.out.println("Disk " + topN + " from " + from + " to " + to);
    move(topN - 1, inter, from, to);
    }


    }

    }

    使用递归方式判断某个字串是否是回文( palindrome )

    设计思想:比较首尾的字符,要是相同在继续比较第二个字符,按照这样的方法一直比较,知道相同,输出结果。

    package 回文;

    import java.util.Scanner;

    public class Number {
    public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String s = in.nextLine();
    int i = 0;
    int j = s.length() - 1;
    System.out.println(s + " 是回文数么? " + Number .gNum(s, i, j));
    }

    public static boolean gNum(String s,int i,int j){
    if(i > j)
    throw new IllegalArgumentException();
    if(i == j)
    return true;
    else{
    return (s.charAt(i) == s.charAt(j)) && gNum(s,i+1,j-1);
    }
    }

    }

     

  • 相关阅读:
    BroadcastReceiver总结
    一二三(The Seventh Hunan Collegiate Programming Contest)
    使用 JQueryMobile 点击超链接提示“error loading page” 错误
    盒子游戏(The Seventh Hunan Collegiate Programming Contest)
    遗留系统升级改造方案思路
    根据外接鼠标控制笔记本触摸板禁用或启用
    设计模式之策略模式
    android4.3环境搭建
    清晰明亮的白色lua协程(coroutine)
    基于JUnit和Ant测试程序正在运行使用Kieker(AspectJ)监测方法
  • 原文地址:https://www.cnblogs.com/ydy1/p/7659235.html
Copyright © 2020-2023  润新知