掌握 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]);
// }
}
}
}
时间过得很快,转眼间已经过了两周了,期间虽然遇到了国庆假期,但也是学习到了很多新的知识,没什么好说的,继续努力,一点点的提升自己。