java学习第二周

学习目标:

掌握 Java 入门知识


学习内容:

1、 掌握动态数组相关内容
2、 掌握方法的调用以及方法的参数传递
3、 掌握break、continue、return关键字的用法
4、 掌握流程控制相关内容


学习时间:

1、 周一至周五早上8:30—晚上9:00
2、 周六、周日自行安排


相关代码:

package Day07;

/**
 * @Author: xuzhen
 * @Date: 2020/9/28 18:14
 * @Description:
 * 一组序列  1 ,1,   2,3,  5  ,  8... n, 第12个数  为多少?
 */
public class Work1 {
    public static int one(int n){
        if (n==1 || n==2){
            return 1;
        }
        return one(n-1)+one(n-2);
    }

    public static void main(String[] args) {
        int s=one(12);
        System.out.println(s);
        }
}
package Day07;

/**
 * @Author: xuzhen
 * @Date: 2020/9/28 18:36
 * @Description:
 *  前5个阶乘之和     例如 5!+4!+3!+...1!
 */
public class Work2 {
    public static void main(String[] args) {
        int s=5;
        int sum=0;
        for (int i=1;i<=s;i++){
            int m1=m(i);
            sum+=m1;
        }
        System.out.println("前5个数的阶乘之和是"+sum);


    }

    public static int m(int i){
        if (i==1){
            return 1;
        }
        int n=i*m(i-1);
        return n;
    }
}
package Day07;

import java.util.Scanner;

/**
 * @Author: xuzhen
 * @Date: 2020/9/28 18:45
 * @Description:
 *  定义一个函数,函数有一个整型参数n,
 *   如果参数n为偶数时,调用函数求1/2+1/4+...+1/n,
 *   如果参数n为奇数时,调用函数1/1+1/3+...+1/n
 */
public class Work4 {
    public static double m(int n){
        if (n==0 || n==-1){
            return 0;
        }
        double sum=1.0/n+m(n-2);
        return sum;
    }

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int s=sc.nextInt();
        double sum=m(s);
        System.out.println(sum);
    }
}
package Day07;

/**
 * @Author: xuzhen
 * @Date: 2020/9/28 18:46
 * @Description:
 */
public class Work5 {
/2 + 2/3 + 3/5 +  5/8.。。。前8个数之和。
     *  规律:   分子和分母的关系
     *     分子: 前一个数的分母
     *     分母: 前一个数的分子 + 前一个数的分母
     *    步骤1 : 先求出 第n 个数是多少  分子/分母
     *    步骤2: 在求前n个数之和  =  前n-1个数的和 + 第n个数
     *   n=1  1/1
     *   n=2  1/2
     *   n=3  2/3
     *   n=4  3/5
     *   n=5  5/8   f(5)/f(6)
     */
public static double sum(int n){
    if(n==1){
        return 1.0/1;
    }
    return sum(n-1)+getNum(n);
}

    public static double getNum(int n ){
        if(n==1){
            return 1.0/1;
        }
        if(n==2){
            return 1.0/2;
        }
        return f(n)*1.0/f(n+1);

    }



    /**
     * 斐波拉契序列
     * @param n
     * @return
     */
    public static int f(int n){
        if(n==1){
            return 1;
        }
        if(n==2){
            return 1;
        }
        return f(n-1)+f(n-2);
    }
    public static void main(String[] args) {
        System.out.println(sum(8));
    }

}
package Day08;

import java.util.Arrays;

/**
 * @Author: xuzhen
 * @Date: 2020/9/29 18:43
 * @Description:
 * 有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
 *   如有数组{23,25,36,  67,77,79,89},然后有数组50来插入在数组中组成一个新的数组
 */
public class Work2 {
    public static void main(String[] args) {
        int [] arr={23,25,36,67,77,79,89};
        int [] arr2 = new int[arr.length+1];
        for(int i=0;i<=arr.length;i++){
            if (i<3){
                arr2[i]=arr[i];
            }else if (i==3){
                arr2[i]=50;
            }else{
                arr2[i]=arr[i-1];
            }
        }
        System.out.println(Arrays.toString(arr2));
    }

}
package Day08;

import java.util.Arrays;

/**
 * @Author: xuzhen
 * @Date: 2020/9/29 19:07
 * @Description:
 * 有数组{12,5,87,97,1,45,71,112,50,80},将数组的前一半保存到新数组a中,将
 *    后一半保存到新数组b中。
 */
public class Work4 {
    public static void main(String[] args) {
        int[] arr={12,5,87,97,1,45,71,112,50,80};
        int[] a=new int[arr.length/2];
        int[] b=new int[arr.length/2];
        int c=0;
        for (int i=0;i<arr.length;i++){
            if (i<arr.length/2){
                a[i]=arr[i];
            }else{
                b[c]=arr[i];
                c++;
            }
        }
        System.out.println(Arrays.toString(a));
        System.out.println(Arrays.toString(b));
    }
}
package Day08;

import java.util.Arrays;

/**
 * @Author: xuzhen
 * @Date: 2020/9/30 9:06
 * @Description: 100个人围成一圈,假设某个人是第一个人,
 * 从他开始报数1、2、3,只要报3的人就出去,
 * 问最后剩下一个人,这个人最开始的位置。
 */
public class Work10 {
    public static void main(String[] args) {
        int[] a = new int[100];
        int jishu = 0;
        int all = 100;
        int tuichu = 0;
        for (int i = 0; i < all; i++) {
            a[i] = i + 1;
        }
        int n = 0;
        while (all - tuichu > 1) {
            if (a[n] != 0) {
                jishu++;
            }
            if (jishu == 3) {
                a[n] = 0;
                jishu = 0;
                tuichu++;
            }
            if (n == all - 1) {
                n = -1;
            }
            n++;

        }
        for (n = 0; n < a.length; n++) {
            if (a[n] != 0) {
                System.out.println(a[n]);
            }
//        int x, all = 100, i = 0, count = 0, exit = 0; //i 循环变量,count 计数,exit退出队列人数
//        int[] arr = new int[100];
//        for (x = 0; x < all; x++) { //为n个人编号(从1开始编号)
//            arr[x] = x + 1;//给数组赋值
//        }
//
//        while (all - exit > 1) {//总人数 - 退出的人数(当前的人数)> 1时进行报数
//            if (arr[i] != 0) {//编号未退出(编号==0 退出);
//                count++;
//            }
//
//            if (count == 3) {
//                arr[i] = 0;// 当前的编号退出,编号置0
//                count = 0;
//                exit++;
//            }
//
//            if (i == all - 1) {//作用是让当报数到最后一个人时,将下标赋值-1,这样下次的i自增就是0,
//                //到达了从又从头开始的目的
//                i = -1;
//            }
//
//            i++;
//        }
//
//        for (i = 0; i < all; i++) {
//            if (arr[i] != 0) {
//                System.out.println("留下人编号==== " + arr[i]);
//            }
        }
    }
}

学习感想:

    时间过得很快,转眼间已经过了两周了,期间虽然遇到了国庆假期,但也是学习到了很多新的知识,没什么好说的,继续努力,一点点的提升自己。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值