zoukankan      html  css  js  c++  java
  • JAVA课后作业2

              程序设计思路:先计算N!,其中用递归计算。在分别计算N!,K!,(N-K)!.其中计算N!时直到N=1或0时结束,输出N。

             流程图:

                      源代码:

    import java.util.Scanner;
    public class Zuoye1_1 {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    int n,k,ans;
    Scanner input=new Scanner(System.in);
    System.out.print("输入n,k:");
    n=input.nextInt();
    k=input.nextInt();
    ans=jiecheng(n)/(jiecheng(k)*jiecheng(n-k));
    System.out.print("答案:"+ans);
    }
    public static int jiecheng(int n) {
    if(n==1||n==0)
    return 1;
    else
    return n=jiecheng(n-1)*n;
    }

    }

              结果;

     

    程序设计思:出杨辉三角的第n行的第m个的值等于该位置的元素的上一行的左右两个输的和,然后根据杨辉三角与组合数的关系即c(n,m)等于杨辉三角的第n-1的第m-1和第M个元素的值的和,根据这个来写出组合数的值。

    流程图:

    源代码:

    import java.util.Scanner;
    public class Zuoye1_2 {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input=new Scanner(System.in);
    System.out.print("输入n,k:");
    int n=input.nextInt();
    int k=input.nextInt();
    int[][] a=new int[n+1][n+1];
    for(int i=0;i<n+1;i++)
    {

    for(int j=0;j<=i;j++) {

    if(j==0||j==i)
    {
    a[i][j]=1;
    System.out.print(a[i][j]+" ");
    }
    else
    {
    a[i][j]=a[i-1][j-1]+a[i-1][j];
    System.out.print(a[i][j]);
    System.out.print(" ");
    }
    }
    System.out.println();
    }
    if(n<2||k==1)
    System.out.println("num=1");
    else System.out.println("组合数="+a[n][k-1]+"="+a[n-1][k-2]+"+"+a[n-1][k-1]);

    }

    }

    结果:

     

    程序设计思路:输入n,m,两个数(来组成要求出的组合数)(n>m),如果m=1,则输出结果n,如果m!=1,则进入递归,运用公式,直到进行到n-m=1的时候,结束递归,输出结果。

    流程图:类似上一题

    源代码;

       import java.util.Scanner;

    public static void main(String args[]) {
            Scanner sc=new Scanner(System.in);
            System.out.print("输入N值:");
            int n=sc.nextInt();
            System.out.print("输入K值:");
            int k=sc.nextInt();
            System.out.println("结果为:"+C(n,k));
        }
        public static int C(int n,int k)
        {
            if(n<0||k<0||n<k)
                return 0;
            if(n==k)
                return 1;
            if(k==1)
                return n;
            return C(n-1,k)+C(n-1,k-1);
        }
    结果:

    程序设计思路:

    首先输入盘子的数量n,如果盘子的数量是1,则直接将编号为1的圆盘从A移到C,递归结束。

    否则:

    递归,将A上编号为1至n-1的圆盘移到B,C做辅助塔;

    直接将编号为n的圆盘从A到C;

    递归,将B上的编号为1至n-1的圆盘移到C,A做辅助塔。

    流程图:

    源代码:

    import java.util.Scanner;
    public class HanNuoTa {

    public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner sc=new Scanner(System.in);
    int n;
    System.out.println("盘子数:");
    n=sc.nextInt();
    System.out.println("步骤数:"+new HanNuoTa().hanoiTower(n));
    HanNuoTa HanoiTower = new HanNuoTa();
    HanoiTower.move(n, 'A', 'B', 'C');

    }

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

    public void move(int n, char a, char b, char c) {
    if (n == 1)
    System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
    else {
    move(n - 1, a, c, b);
    System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
    move(n - 1, b, a, c);
    }
    }

    }

    结果:

     
    程序思路:从键盘随意输入一个字符串,并将其赋值给一个数组,然后用递归进行,若i=j,泽肯定是递归,否则从数组的首元素与尾元素进行比较,若相等,则进行i++与j--,不断向中间靠拢,直到达到判断条件i>=j(i=j是输入的字符串的长度为偶数个,i>j是输入的字符串有奇数个),中间若有一次不符合判断,直接跳出递归,结束进程,输出不是回文字符串。(i是指的字符串的第一个元素的下标,j是指的字符串的最后一个元素的下标)
    流程图:

    源代码:
    import java.util.Scanner;
     
    public class huiwen
    {
    private static int n;
    private static char a[];
    
        public static void main(String args[]){
            Scanner sc=new Scanner(System.in);
            String str;
            str=sc.nextLine();
            n=str.length();
            a=str.toCharArray();
            if(huiwen(0))
            System.out.println(str+" 是回文数");
            else System.out.println(str+" 不是回文数");
    
        }
    
    
        public static boolean huiwen(int m){
             if(m>=n/2)
             return true;
             if(p[m]==a[n-1-m]) 
            return huiwen(m+1);
            else return false;  
        }         
        }

    结果:

  • 相关阅读:
    java的final变量理解
    springMVC如何判断入参是默认参数还是请求传过来的参数?
    java反射新的应用
    冒烟测试和回归测试的区别
    git变基、冲突解决
    mockServer学习
    mongodb查询之模糊查询
    springxml配置构造函数入参
    mockito学习
    solr官方文档翻译系列之schema.xml配置介绍
  • 原文地址:https://www.cnblogs.com/xiaojq/p/7664571.html
Copyright © 2011-2022 走看看