方法以及方法的重载和方法的递归调用
方法根据方法的有无参数和有无返回值分为以下四类:
(1)无参无返回值
(2)无参有返回值
(3)有参无返回值
(4)有参有返回值
-
方法调用
static修饰的方法:类名.方法名()(如果在同一个类中可以直接省略掉类名.,直接方法名()就可以调用)
类的成员方法:在static方法中调用类的成员方法必须通过对象来引用,引用(对象名).方法。如果在类的成员方法中调用另一个成员方法,用this.方法名(),这里的this可以省略掉,直接用方法名()进行调用。
方法返回值类型必须与方法定义的数据类型保持一致。 -
方法的重载
方法的重载只与参数列表有关(参数类型、参数个数、参数顺序),与参数的返回值类型和修饰符无关。
方法的重载好处是让人觉得好像是调用一个方法。 -
方法的递归调用
递归:函数内部调用自身函数的编程技巧称为递归。
构成条件:(1)子问题须与原始问题为同样的事。
(2)不能无限制的调用本身,需要有个出口,化简为非递归状况处理。
求1~10的和
public class Test05 {
求1~10的和
public static void main(String[] args) {
int num = 10;
int sum = sum(num);
System.out.println(sum);
}
public static int sum(int i) {
if (i == 1)
return 1;
return i + sum(i - 1);
}
}
求10的阶乘
public class Test05 {
求10的阶乘
public static void main(String[] args) {
int num = fun(10);
System.out.println("10!="+num);
}
public static int fun(int i) {
if (i == 1)
return 1;
return i * fun(i - 1);
}
}
缺点:递归调用栈可能会溢出,其实每调用一次递归会在栈中分配空间,而每个进程的栈的内容的栈的容量是有限的,当调用的层次太多的时候,就会超出栈的容量,出现溢栈。
优点:代码简洁;在树的前序、中序、后序遍历算法中,递归的实现比循环简单。