方法
方法的基本概念
- 方法是解决一类问题的有序步骤
- 方法包含于类或者对象中
- 方法在程序中被创建,在其他地方引用
设计方法的原则:一个方法只完成一个功能,这样有利于后期的扩展
Java是值传递!
方法重载
- 方法名称必须相同
- 参数列表必须不同
- 方法的返回值类型可以相同也可以不相同
- 仅仅是返回值类型不同不足以成为方法的重载
可变参数
-
在方法声明中,在指定参数类型后面加一个省略号(…)
-
一个方法只能指定一个可变参数,它**必须是方法的最后一个参数!**任何普通的参数都必须在它前面声明!
递归
一般方法的调用是A方法调用B方法,而递归就是A方法调用A方法。
利用递归可以使用一些简单的程序来解决一些复杂的问题,通常把一些大型且复杂的问题进行层层转化,逐渐转化为一个与原问题相似的,且规模较小的问题来求解,只需要少量的程序就可以描述出解题过程中所需要的多次重复计算,大大减少了代码量。
递归一般包括两个结构:
- 递归头:什么时候不调用自身方法,如果没有头,将会陷入死循环。
- 递归体:什么时候调用自身方法。
public static void main(String[] args) {
//求数的阶乘!
System.out.println(Factorial(5));
}
//1! =1 f(1) = 1
//2! = 2*f(1)
//3! = 3*f(2)*f(1)
//一层一层逐级向下调用
public static int Factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * Factorial(n - 1);
}
}
边界条件:程序可以执行到底的条件(当n=1时)
前阶段:当n≠1的时候,程序将会逐级向下调用
返回阶段:n*(n-1)
当问题基数比较小的情况下,可以使用递归思想来解决问题,但是基数一旦偏大,递归容易占用大量的栈内存空间,甚至会导致栈内存溢出影响机器性能。