递归和重载

本文介绍了Java中形参长度可变的方法定义与使用,探讨了递归与重载的概念及实现方式,并通过具体示例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先先讲一个形参长度可变的方法,从JDK1.5以后,Java允许定义形参长度可变的参数,从而允许为方法指定数量不确定的形参。
这个方法不错,以后用的时候可能会很简单,减少麻烦了;
形参长度可变的方法定义:如果在定义方法时,在最后一个形参的类型后增加三点…,则表明该形参可以接受多个参数值,
多个参数值被当成数组传入。
例:
public static void outClassInfo(String cname,String…sname){
//在方法体内将参数sname当成是数组 }

for (String student : sname){
System.out.println(student);
}
//在方法体内,将参数sname当成数组处理

形参长度可变的方法调用:
outClassInfo(“08软件技术”,“李四”,“王五”,“赵六”);
//如果 String…sname在 String cname前边,那摩后面的字符串将都是sname;
|

|
传递给形参cname 这三个传递给形参sname;
以可变个数形参来定义方法
public static void outClassInfo(String cname , String... sname);//调用可变形参的方法,更加简洁;

采用数组形参来定义方法
public static void outClassInfo(String cname , String[] snames)
//调用数组形参来声明的方法,必须传给该形参一个数组,outClassInof(“09软件”,new String[]{“王五”,“李四”});

这两个方法签名的效果虽然一样,但还是有区别的:

数组形式的形参可以处于形参列表的任意位置,但个数可变的形参只能位于形参列表的最后;

好的现在开始讲递归和重载,这两个其实吧不是特别难,但也不是挺简单,我本人认为吧这个重载可能更简单一些;
递归: 如果一个方法定义中直接或间接调用它本身,就是方法的递归调用。

递归体:递归的方式
递归方法一般由两部分组成:
递归出口:递归终止的条件


我把我写的一个递归来巨一下例 ;
例4.11已知有一个数列:f(1)=1,f(2)=1,f(3)=2;f(4)=3;f(5)=5…, f(20);
class Test
{
public static int fn(int n)
{
if(n==1)//递归的出口
return 1;
else if(n==2)
return 1;//递归的出口
else
return fn(n-1)+fn(n-2);//递归表达式,
}
public static void main(String[] args)
{
System.out.println(fn(20));//递归方法
}

}

编写程序,计算10的阶乘。

public static long calc(int n)
{

if(n==1)
{

return 1;

}else
{

return n*calc(n-1);
//以前写阶乘都是用for,现在这样也可以的O '
}

}

其实这个递归关键是找到表达式,这样就好办多了,所以数学好还是有一定用处的;

重载: Java语言允许在一个类中定义几个同名的方法,但要求这些方法具有不同的参数特征,这种做法称为方法的重载;

不同的参数特征包括:
参数个数:int GetSort(int x); int GetSort(int x,int y);

参数类型:int GetSort(int x); int GetSort(double x);

参数次序:int GetSort(int x,double y); int GetSort(double x,int y);


返回值类型不是重载的依据,如果返回值类型不同这就不叫重载了;
重载方法的调用:当类中有多个重载的方法,调用该类的某个重载方法时,Java能够根据实参表的不同区分实际调用的是哪一个方法。

重载方法中有一个带可变长度的形参。

public void test(String msg);
public void test(String… books);


则, olv.test(); //调用test(String… books);

olv.test(“aa”,”bb”); //调用test(String… books);

olv.test(“aa”); //调用test(String msg);

其实只要掌握住方法,按照各个方法的基本样式,理顺一下思路,其实也就不难了,除了极个别特别抽象的,那就无语了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值