可变参数
从JDK 1.5开始,Java支持传递同类型的可变参数给一个方法
具体规则:
-
在方法声明中,在指定参数类型后加一个省略号(...)
-
一个方法只能有一个可变参数,且位置必须是最后一个参数,普通参数要在它之前声明
public class Hello {
public static void main(String[] args) {
add(1, 2, 3, 4, 5); //可以传递任意个参数
}
public static void add(int...nums) { //如果还有普通参数,一定要放在前面
int max = nums[0];
for (int i = 1; i < nums.length; i++){
if (nums[i] > max){
max = nums[i];
}
}
System.out.println("最大值为:" + max);
}
}
递归
递归就是方法自己调用自己,递归通常把一个大型复杂的问题层层转化为一个与原问题i相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量
不建议使用递归,容易导致栈溢出!
递归结构包括两部分
-
递归头:什么时候不需要调用自身方法。如果没有头,将陷入死循环
-
递归体:什么时候需要调用自身方法
public class Hello {
public static void main(String[] args) {
System.out.println(f(5)); //计算n的阶乘
}
public static int f(int n) {
if (n == 1){ //递归头,终止递归的条件,当n == 1时终止
return 1;
}else{ //递归体,当n != 1时,向下递归
return n * f(n - 1);
}
}
}
练习:编写一个计算器,且循环接收用户输入