20.9.10笔记
单词
random 随机 function 函数 method 方法 StackOverflowError 栈溢出错误
Array 数组 Index 索引 length 长度
递归
方法调用自身的过程成为递归-递归算法
应用场景:
例:1.for循环可以求前n项和
2.求n的阶乘 n!
3.求斐波那契数列-第n项的值0、1、1、2、3、5、8
缺点:
效率不高,还容易造成栈溢出,不建议递归
public static int sum(int n){
if (n==1) {
return 1;//
}
return n*sum(n-1);//StackOverflowError
// 栈溢出错误
//调用方法 返回值
//sum(5) 5+4+3+2+1
//sum(4) 4+sum(4-1)
//sum(3) 3+sum(3-1)
//sum(2) 2+sum(1)
//sum(1) 1
//
}
数组
数组就是一个容器
形式:
int [] arr = {100,200,300}
1.声明数组:int [] arr;
2.初始化 初始化之后有默认值:arr=new int[7];
3.赋值 通过索引 数组名[]:
arr[0]=1;//给数组的第一个元素赋值为1
arr[1]=2;//给数组的第二个元素赋值为100
arr[4]=200;//给数组的第五个元素赋值为200
4.访问 数组名[]:
System.out.println(arr[3]);
5.注意事项
1.长度固定
2.只能存储固定类型的数据
3.存储地址连续 601 602
4.不能超出索引 超出之后索引异常的错误ArrayIndexOutOfBoundsException
5.数组使用之前一定要初始化 数组有默认值 int 0 String null boolen false
6.索引最大值比长度小1
特点:
1.长度固定,一旦确定了数组的长度就不可以更改
2.存储类型是一致的,只能存储一种数据类型
3.存储连续,通过索引访问数组
例题:
请输入学生数量 依次录入学生成绩 保存到一个数组中
public static void main05(String[] args) {
creatStudentScoreArray();
}
public static void creatStudentScoreArray(){
System.out.println("请输入学生的数量:");
Scanner scanner=new Scanner(System.in);
int count=scanner.nextInt();
//1.获取用户输入的学生数量
float [] scoreArr;
scoreArr=new float[count];
//2.创建成绩数组
for (int i = 0; i < scoreArr.length;) {
System.out.println("请输入第"+(i+1)+"学生的成绩");
float score= scanner.nextFloat();
//获取用户输入的成绩
if (score>=0&&score<=150) {
scoreArr[i++]=score;
}
}
//3.录入
for (int i = 0; i < scoreArr.length; i++) {
System.out.println(scoreArr[i]);
}
//4打印数组成绩