函数
函数的基本概念和重载函数
- 什么是函数?
函数是封装了特定功能的代码块 - 函数的好处
方便使用,减少重复代码的书写 - 函数的写法:
关键字(public static等) 返回值类型 函数名(参数类型 参数1,参数类型 参数2,...){
函数中的语句1;
语句2;
//return后面 返回的返回值 要跟函数的 返回值类型 对应
return 返回值
}
- 函数的书写位置
在类中书写 - 函数的分类:
1.无参数 无返回值的 函数
2.有参数 有返回值的 函数
3.有参数 无返回值的 函数
4.无参数 有返回值的 函数 - 函数的调用
使用 函数名(传入的参数); - 编写函数的步骤:
1.确定函数有没有返回值 (我接下来是否要使用这个返回值)
2.确定函数有没有参数 有的话是几个 都是什么类型
3.写函数中的语句 - 函数的重载:
实现相同的功能,但是函数的内部实现不同。函数的重载是函数名字相同,并且只跟参数有关(参数的类型 参数的顺序 参数的个数有关),跟参数的返回值和参数名无关。 - 函数的重载有什么用?
只需记住一个函数名可以根据不同情况使用不同的功能
- 实例
需求:
计算两个数的最大值
计算三个数的最大值
计算四个数的最大值
计算五个数的最大值
- 实例
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(max(1, 2,3,4,5));
}
public static int max(int a,int b) {
int max = Math.max(a, b);
return max ;
}
public static int max(int a,int b,int c) {
int max = max(max(a, c), b);
return max ;
}
public static int max(int a,int b,int c,int d) {
int max = max(max(a,b,c), d);
return max ;
}
public static int max(int a,int b,int c,int d,int e) {
int max = max(max(a, b, c, d), e);
return max ;
}
//输出结果为:5
递归原理
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
* 递归的三个条件:
1.边界条件
2.递归前进段
3.递归返回段
当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
下面通过一个示例程序的两种方法来说明:
使用Java代码阶乘。(n的阶乘=n * (n-1) * …* 5 * 4 * 3 * 2 * 1)
public static void main(String[] args) {
System.out.println(fun(5));
System.out.println(fun1(5));
}
//递归
public static int fun(int i) {
if (i == 1) {
return 1;
//递归的出口,没有出口相当于死循环
}else
return i*fun(--i);
}
//累加思想
public static int fun1(int j ) {
int num = 1;
for(int i = 1;i <= j ;i++)
num = num * i;
return num;
}
//输出结果为:
120
120
- 分析
此题中,按照递归的三个条件来分析:
(1)边界条件:阶乘,乘到最后一个数,即1的时候,返回1,程序执行到底;
(2)递归前进段:当前的参数不等于1的时候,继续调用自身;
(3)递归返回段:从最大的数开始乘,如果当前参数是5,那么就是5*4,即5*(5-1),即n*(n-1)