1.递归方法
一个方法体内调用自身,就被称为方法递归,方法递归包含了隐式循环,会重复执行一段代码,而且无须进行循环控制。
首先先来介绍递归的特点:
1.必须在某一个时候方法的返回值是确定的,即不在调用自身,否则就会类似于死循环。
2.次数不能太多,否则容易造成内存溢出
3.构造方法不能递归
有一个很经典的题目,斐波那契数列,可以使用递归来解决,如:
有一对兔子,从出生后第三个月开始每个月都生一对兔子,小兔子出生三个月后也是每个月生一对兔子,假如兔子都不死,那么第二十个月的兔子对数是多少?
代码实现:
public class FibonacciSequence {
public static void main(String[] args) {
// 定义一个数组 int[] arr = new int[20];
arr[0] = 1;
arr[1] = 1; for (int i = 2; i < 20; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
} int a = 1; int b = 1; for (int i = 0; i < 18; i++) { int temp = a;
a = b;
b = temp + b;
}
System.out.println(b); //6765
System.out.println(fib(20)); //6765
} /*
* 方法: 返回值类型:int 参数列表:int n 出口条件: 第一个月是1,第二个月是1 规律: 从第三个月开始,每一个月是前两个月之和 */
public static int fib(int n) { if (n == 1 || n == 2) {
return 1;
} else { return fib(n - 1) + fib(n - 2);
}
}
}
2.方法重载
java允许同一个类里面定义多个同名方法,只要形参列表不同即可,如果一个类中包含了两个或两个以上的方法的方法名相同,但形参列表不同,则被称为方法重载。
在java中确定一个方法需要有如下三个要素:
1.调用者,可以是类也可以是对象
2.方法名
3.形参列表
方法重载的要求就是同一个类中方法名相同,参数列表不同
例如:
public class Overload {
public void test() {
System.out.println("无参数");
}
public void test(String msg) {
System.out.println("重载的test方法" + msg);
}
public static void main(String[] args) {
Overload o = new Overload();
o.test();
o.test("hello world");
}
}
上面的代码中o.test未传入参数的话则调用的无参数的test()方法,而传入参数则调用带字符串参数的方法.