方法
是语句的集合。组成执行一个功能
解决一类问题的有序组合
包含在类或对象中
在程序中被创建,在其他地方被引用
设计原则: 一个方法只完成一个功能 ->有利于后期的扩展
定义和调用
方法的成分: 方法头+方法体
[修饰符] 返回值类型 方法名([参数类型 参数名]){
// 方法体
return 返回值;
}
调用
方法名()
方法重载
拥有相同的方法名,但是形参不同的方法
规则: 方法名相同、参数列表不同,返回值类型可变
实现理论: 当方法被调用时,编译器会根据调用方法的参数个数、类型等逐个匹配。
eg:
void function(int i){}
void function(double i){}
可变参数
可以传递多个同等类型的方法形式
在方法声明时,在指定参数类型后加一个省略号 …
规则: 一个方法只能指定一个可变参数、且必须是最后一个参数。
public static void main(String[] args) {
function(1,2,3,4,5);
}
public static void function(int... i){ //本质传入的就是一个数组
for (int num : i) {
System.out.println(num);
}
}
递归
本身 调用 本身
用处:
用于把一个复杂的问题层层转化为一个与原问题类似的小问题来求解
优点:
用少量的程序描述出解题过程所需要的多次重复计算,减少代码量。
结构:
递归头:什么时候不调用自身方法。
递归体:什么时候需要调用自身方法。
eg:
/*
问题描述:
1!=1
2!= 2*1
3!= 3*2*1
...
n! = n*....*1
*/
public static void main(String[] args) {
System.out.println(factorial(3));
}
public static int factorial(int n){
if (n == 1){
return 1;
}else {
return n*factorial(n-1);
}
}
使用逻辑:
factorial(3) => 6
3*factorial(2) => 3*2 ^
2*factorial(1) => 2*1 ^
1*factorial(1)->return 1 => 1 ^
注:
由于占用内存较大、不推荐使用。
仅在递归层数较少时推荐使用
6万+

被折叠的 条评论
为什么被折叠?



