1.定义:
实现特定功能的代码块,通过调用方法可以实现代码的重用。方法的定义不能嵌套,即在一个方法内不能定义另外一个方法。
2.语法格式:
修饰符 返回值类型 方法名(参数类型 参数名){
方法体;
返回值类型
}
例子:比较三个数的大小,并且利用方法进行封装
public static void main(String[] args){
int a=3;
int b=4;
int c=5;
System.out.println("三个数的最大值是:"+getMax(a,b,c));
}
public static int getMax(int a,int b,int c){
int max_temp = a>b?a:b;
int max=max_temp>c?max_temp:c;
return max;
}
3.方法的重载
方法名相同,参数列表不同(参数个数或者参数类型不同)
其他如方法修饰符,返回值类型与方法重载没有任何关系
4.递归方法
在一个方法体内调用它自身,称为方法递归。方法递归是一种隐式循环。递归因为不断需要进行压栈操作,所以递归次数如果过多则容易引起栈溢出。递归必须得由出口,否则将变成死递归,递归方法也就毫无意义。
例子1:分别使用循环和递归来计算5!
循环实现
public static void main(String[] args){
//循环实现
int num=5;
int factorial =1;
for(int i=1;i<=num;i++){
factorial*=i;
}
System.out.println(num+"的阶乘是:"+factorial);
}
递归实现
public static void main(String[] args){
int num = 5;
System.out.println(num+"的阶乘是:"+Recursion(num));
}
public static int Recursion(int num){
if(num==1){ //递归的出口
return 1;
}else{
return num*Recursion(--num);
}
}
例子2:兔子问题(斐波那契数列)
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
由此可见兔子对象的数据是:1 , 1 , 2 , 3 , 5 , 8 ,13…
即从第三个数开始,都为前两个的数之和。
递归实现
public static void main(String[] args){
int month=8;
int total=Recursion(month);
System.out.println(month+"个月后一共有"+total+"对兔子");
}
public static int Recursion(int month){
if(month==1||month==2){
return 1;
}else{
return Recursion(month-1)+Recursion(month-2);
}
}
当然也可以定义数组,利用循环来实现