什么是函数?
编程语言中函数和数学中的函数不是一个东西。它是为了解决特定问题具有名称的代码集合,也就是现实中一种行为动作。它可以实现代码的高度复用!!
Java中如何定义函数
格式:
访问修饰符 函数返回值的类型 函数名称([参数列表]){
//函数体
//retrun 返回值;
}
注:Java中函数是属于类的!!!必须定义在类中!!!所以函数是类成员,先把函数都定义静态函数,等学习了面向对象,再学习常规函数。
函数的分类
1、有没有参数
有参数
无参数
2、有无返回值的函数
在函数中,如果遇到return关键字,函数值直接返回
无返回值的函数(上面的图就是)有返回值的函数
3、定义者
系统函数、第三者、自定义函数局部变量
定义在函数中的变量叫做局部变量。意思是函数中定义的变量只适用与函数,而函数外的不适用,需重新定义。
所以:成员变量可以定义整个类,而局部变量只能定义函数类。
如上图,flag(int num)和int num的变量num不是同一个变量,前者是局部变量,后者是成员变量。
函数重载(overload)
函数名称相同,函数的参数个数或者类型不同,调用的时候,自动匹配对应类型。
由上图可知,定义变量的类型不同,最后输出的函数也不同。
所有的编程语言都有函数重载吗?
函数重载是强数据类型语言(Java、C、C++、C#)所持有的景象,而若数据类型语言(JavaScript、python、Ruby)是不具备函数重载的。
递归(recursion)
它是函数自身调用自身的称呼。
它可以非常简单的解出一些题目,比如斐波那契数列、上楼梯问题等等。
斐波那契数列:
上楼梯问题:
优点:分支理念的体现,可以把非常复杂的问题简单解决。
缺点:非常消耗内存,所以当栈被全部占用后,会触发异常!!