2020.12.24Java基础2

斐波那契数列

由于昨天时间的问题,关于基础的练习部分并没有写完,今天的就是继续关于java基础的回顾与练习

程序的要求便是第三个数是前两个的和,第一个数和第二个数是1,由此条件可知我们不可能使用定义变量去定义许多变量,自然我们需要使用数组,所以我们可以按照这个思路,来写出如下的程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Test04 {
public static void main(String[] args) {
//为了存储数据所以首先定义数组
int[] arr = new int[20];
//第一个数据和第二个数据已知所以我们可以先进行数据的初始化
arr[0] = 1;
arr[1] = 1;

//我们可以使用循环来进行计算
for(int x = 2; x < arr.length; x++) {
arr[x] = arr[x-2] + arr[x-1];
}
System.out.println(arr[19]);
}
}

事实上以上的代码非常的容易理解,就是通过循环来计算出后面的数据的值倒没什么需要特别注意的地方

百钱百鸡

这个程序在学习循环的地方 相信是一个经典的案例了,而我在学习c语言时便经常写此类程序,其实本质来说非常的简单而下面的程序用了一个不同的思路,让我们一起来看一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Test05 {
public static void main(String[] args) {
//第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x=0,判断条件是x<=20
for(int x=0; x<=20; x++) {
//第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y=0,判断条件是y<=33
for(int y=0; y<=33; y++) {
//这个时候,用于表示鸡雏的变量 z = 100 – x – y
int z = 100 - x - y;

//判断表达式 z%3==0 和表达式 5*x + 3*y + z/3 = 100 是否同时成立
if(z%3==0 && 5*x+3*y+z/3==100) {
System.out.println(x+","+y+","+z);
}
}
}
}
}

现在让我来详细的分析这个程序,我们使用x,y来代表公鸡和母鸡的个数,但在小鸡的地方我们并没有再使用一个循环,而是直接在二层循环之中来用100减去公鸡和母鸡的值,这样就减少了我们计算机运算量,然后我们在循环的最里面,进行一个判断,将所有满足条件的数据进行输出,这样我门,就完成了程序。

今天还是因为时间的问题 , 所以剩下的内容还是在后退考试结束,后载进行完整的更新。

你的支持是我最大的动力!
0%