Java学习13
递归
A方法调用B方法,易理解
递归就是:A方法调用A方法!就是自己调用自己。
利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
- 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。
- 递归体:什么时候需要调用自身方法。
例 (阶层)
//以5的阶层为例
public static void main(String[] args) {
System.out.println(f(5));
}
public static int f(int n) {
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}
结果为:
解释:
相当于往栈里面堆东西,首先是将5丢到底部,再依次将4、3、2、1丢进去,但丢到1的时候会触底,触底则要反弹,所以便从1开始一次反弹出去,最终得出一个结果来。
(图片来源:微信公众号“数据结构和算法”)
能不用递归就不用递归
但是递归也有用处,是为基数较小的情况下好用(小计算)
数组的定义
- 数组是相同类型数据的有序集合。
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。
- 其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。
数组声明创建
首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的语法:
dataType[] arrayRefvar; //首选的方法
或
dataType arrayRefvar[]; //效果相同,但不是首选方法
变量的类型相当于数组类型
变量名字=变量的值
Java语言使用new操作符来创建数组,语法如下:
dataType[] arrayRefvar =new dataType[arraySize];//需要给它赋值一个数组大小
数组的元素是通过索引访问的,数组索引从0开始。
获取数组的长度:arrays.length
例:
int[] nums;//定义
nums =new int[10];//这里面可以存放10个int类型的数字
例:计算所有元素的和
int[] nums;//1.声明一个数组
nums =new int[10];//2.创建一个数组
//3.给数组元素赋值
nums[0]=1;
nums[1]=2;
nums[2]=3;
nums[3]=4;
nums[4]=5;
nums[5]=6;
nums[6]=7;
nums[7]=8;
nums[8]=9;
nums[9]=10;
//计算所有元素的和
int sum=0;
//获取数组长度 arrays.Length
for (int i = 0; i < nums.length; i++) {
sum=sum+nums[i];
}
System.out.println("总和为:"+sum);
结果为: