• 课程作业1


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

    a.设计思想

    定义n和k,用递归函数表示出N!的阶乘结果,c(n,k)=n!/(k!(n-k)!);调用函数求出c(n,k)的结果

    b.源代码

    package kecheng1;
    import java.util.Scanner;
    public class Test
    {
        public static void main(String[] args) 
        {
            System.out.print("请输入N:");
            Scanner s=new Scanner(System.in);
            int n=s.nextInt();
            System.out.print("请输入:k") ;
            int k=s.nextInt();
            System.out.println(n+"!="+ca(n));
            double x=ca(n)/(ca(k)*ca(n-k));
            System.out.println(x);
        }
        public static long ca(int n) 
        {
            if(n==1 || n==0)
            {
                return 1;
            }
            
            return n*ca(n-1);
        }//递归函数
    }

    c.流程图

    d.结果截图

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

    a.程序设计思想

    利用递推的方法和杨辉三角计算出组合数的结果,将输入的变量NK表示为杨辉三角的行和列,利用二位数组具体求出杨辉三角的数值,最后输出需要的组合数的数值

    b.源代码

    package kechengab;
    
    import java.util.Scanner;
    public class Dituiyh 
    {
        public static void main(String[] args)
        {
            Scanner put=new Scanner(System.in);
            System.out.println("输入行:");
            int x=put.nextInt();
            System.out.println("输入列:");
            int y=put.nextInt();
            if(y>x)
                System.out.print("输入的数据错误");
            int [][]a=new int[6][6];
            for(int i=0;i<=x;i++)
            {
                for(int s=0;s<=i;s++)
                {
                    if(s==i||s==0)
                        
                        a[i][s]=1;
                    else
                    {
                        a[i][s]=a[i-1][s-1]+a[i-1][s];
                    }
                }
            }//利用二维数组杨辉三角的表示
            System.out.println("组合数c(x,y)的值为"+a[x][y]);//输出要求的值
        }
    
    }

    c.程序流程图

    d.结果截图

    3.汉诺塔

    a.程序设计思想

    调用递归函数,终止条件为参数N=1;移动盘子时,利用两个函数,将盘子移动,利用中间的b柱子作为跳板,递归函数求出具体步骤,引用另一个函数具体输出盘子移动的步骤

    b.程序源代码

    package hannuota;
    import java.util.Scanner;
    public class Peg 
    {
        static private int n = 0;
        public static void main(String[] args) 
        {
             Scanner in = new Scanner(System.in);
             char one = 'A';
             char three = 'B';
             char  two= 'C';
             System.out.println("输入盘子数");
             int num = in.nextInt();  
             hanni(num,one,three,two);
             in.close();
        }
        private static void move(int num,char start,char end)
        {
             n=n+1;
             System.out.println(n+"步操作盘子从:"+start+"-->"+end);
        }//函数表示出具体的盘子移动的方法
        private static void hanni(int num,char one,char three,char two) 
        {
            if(num==1)
            {
                move(1,one,two);
            }
            else
            {
                hanni(num-1,one,three,two);
                move(num,one,two);                 
                hanni(num-1,three,one,two);
            }
         }//递归的方法求出盘子移动轨迹
     }

    c.流程图

    d结果截图

    4.回文数

    a程序设计思想

    定义字符串储存想要的验证的字符串,定义一个数组储存,将两个数组首尾进行比较,结束条件为比较到数组的中值处

    b.源代码

    package huiwen;
     
    import java.util.Scanner;
     
    public class Dihuiwen
    {
        public static void main(String[] args) 
        {
            Scanner put =new Scanner(System.in);
            System.out.println("输入字符串:");
            String a = put.nextLine();//定义字符串
            char[] ch = new char[a.length()];
            for(int i = 0;i<a.length();i++)
            {
                ch[i] = a.charAt(i);
            }//将字符穿赋值给数组
            if(zifu(ch,ch.length)==0)//引用函数体
            {
                System.out.println("该字符串不是回文!");
            }
            else
            {
                System.out.println("该字符串是回文!");
            }//
            put.close(); 
         }
        private static int zifu(char[] c,int i) 
        {
            int size = c.length;
            if(i == size/2)
            {
                return 1;
            }
            if(c[size - i] == c[i-1])
            {
               return zifu(c,i-1);
            }
            else
                return 0;
         } //递归函数判断字符串是否为回文数
    }

    c.流程图

    d.结果截图

     总结

    该课程主要练习了递归函数以及随机数的运用,虽然完成了部分课题,但是自我感觉对于随机数的运用,以及对于递归函数掌握还没有到达非常熟练的地步,在以后的练习中,自己还需要对这两方面内容进行更加全面的认识以及掌握。

  • 相关阅读:
    十的次方——挖掘并非显而易见的观点与想法
    6-3-5式脑力接龙
    三个臭皮匠,顶上一个诸葛亮——在Google Ideathon上Design Thinking分享
    上瘾:如何打造习惯养成中的产品(投资篇)
    上瘾:如何打造习惯养成中的产品(奖励篇)
    上瘾:如何打造习惯养成中的产品(行动篇)
    上瘾:如何打造习惯养成中的产品(触发器篇)
    上瘾:如何打造习惯养成中的产品
    告别2013拥抱2014
    Design Thinking Workshop @ Agile Tour 2013 Shanghai
  • 原文地址:https://www.cnblogs.com/xuzhaoyang/p/7663877.html
Copyright © 2020-2023  润新知