函数的重载!!!!!!!!!
【方法重载概述】
在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
【方法重载特点】
·与返回值类型无关,只看方法名和参数列表
·在调用时,虚拟机通过参数列表的不同来区分同名方法
!!!重载的好处就在于我们可以扩展函数的功能(函数重名,但是参数类型不一样,执行内容也可以不一样)
实例如下:
class Text07_02{
public static void main(String[] args){
int a=3;
int b=4;
System.out.println(add(a,b));
double d=3.14;
double e=5.44;
System.out.println(add(d,e));
System.out.println(add(9,3.14));
System.out.println(add(3.14,9));
}
//1.对两个小数进行加法运算
public static double add(double a,double b){
System.out.println("double+double");
return a+b;
}
//2.对两个字符串进行拼接
public static String add(String a,String b){
System.out.println("String+String");
return a+b;
}
//3.
public static double add(int a,double b){
System.out.println("int+double");
return a+b;
}
//4.
public static double add(double a,int b){
System.out.println("double+int");
return a+b;
}
//5.对两个整数进行加法运算
public static int add(int a,int b){
System.out.println("int+int");
return a+b;
}
}
寻找适当函数的流程! ! ! ! ! ! ! ! ! ! !
1.看是否有确切的参数定义 int+int 查看是否有(int,int)
2.看是否有可兼容的参数定义 int+int 查看是否有(double,double)
3.如果可兼容的参数定义有多个int+int,(double,int)或(int,double) 此时报错 引用不明确
函数的递归调用!!!!!!!!!!
【人用迭代,神用递归】!!!!!!
什么是递归?
-
在一个方法的内部,对自身进行调用,又叫做递归调用
递归和循环的编写都包括三部分:
-
1. 初始值;
-
2. 终止条件;
-
3. 前进步长;
递归解决比较常见的问题:
-
累加加的和;
-
阶乘;
-
斐波那契数列等;
递归递归,先递后归。我们可以把递归分成三个部分,即前进段(就是讲问题从大化小)、结束段(就是问题无法再继续化小,则处理当前的问题)、返回段(就是将小问题都处理完毕之后,向上进行返回(有些问题是不需要返回的)。
斐波那契数列
-
斐波那契数列第一位和第二位的数值都是1,之后的每一位都是前两位的和;
接下来,我们分别用迭代和递归的思想来求斐波那契数列的前10项和。
思想分析:
前10项:1 1 2 3 5 8 13 21 34 55 ......
f(n)指的是斐波那契的第n项
f(n)=f(n-1)+f(n-2) f(1)=1 f(2)=1
f(5)
f(4) f(3)
f(3) f(2) f(2) f(1)
f(2) f(1)
源代码:
class Test07_03{
public static void main(String[] args){
for(int i=1;i<=10;i++){
System.out.println(fibo(i));//用递归的思想求前10项
}
System.out.println("===================");
fiboIterator(10);//用迭代的思想求前10项
}
//迭代函数
public static void fiboIterator(int n){
int a=1;
int b=1;
System.out.println(a);
System.out.println(b);
int count=2;
int c;
while(true){
c=a+b;
System.out.println(c);
count++;
if(count==n){
return;
}
a=b;
b=c;
}
}
//递归函数
public static int fibo(int n){
if(n==1||n==2){
return 1;
}
return fibo(n-1)+fibo(n-2);
}
}