四、函数

来源:互联网 发布:java暂停线程wait 编辑:程序博客网 时间:2024/04/29 22:06


什么是函数?

所有的高级编程语言里面都有函数的定义,非常重要。

Java里面函数:就是定义在类里面的一段独立的小代码,为了完成特定功能,也叫方法。

 

Main函数是一个特殊的函数,因为他是java程序的执行入口。

 

为什么要使用函数?

函数是为了代码的重复使用。

Java里面函数怎么定义?每部分什么含义?

 

修饰符  返回值类型   函数名  (参数类型  参数名1,参数类型  参数名2 ……)

{

一小段代码

Return

}

 

修饰符:顾名思义,修饰的作用,为啥main函数不能直接调用本类定义的其他函数,因为其他函数必须是静态的才可以直接调用,后面讲到。

Public private protected

 

返回值类型:函数运行后结果的类型

返回值类型有一种特殊类型是void表示没有任何返回值

 

 

参数类型:形式参数的数据类型

形式参数:是一个变量,为了存储等到函数调用的时候传递的实际参数数据。

实参:函数调用时传递的数据。

 

 

Return:用于结束当前函数。

 

 /**

 *1加到n的和

 */

 public  static int add(int n){

int sum=0;

for(int i=0;i<n;i++){

sum+=(i+1);

}

return sum;

}

 

 

 

 

 

 

如何使用您定义的函数?

 

调用方式

函数名(实际参数…….)

返回值一般会赋值给一个变量,便于后面使用。

 

调用函数要清楚该函数属于哪个类?

如果该函数定义为static,可以通过:类名.函数名(实际参数);

如果不是static,先创建一个对象。Student s=new Student();

S.study();

 

 

 

 

函数作用是什么?

重构代码,将可能被反复使用的代码独立起来,然后起个名,写成函数即可。

也就是为了代码复用。

 

 

 

 

函数嵌套调用和递归调用?

函数嵌套是指一个函数定义里面,使用了另一个函数。

 

递归调用是指一个函数定义里面调用了自己。

 

递归两个重要条件:

  1. 递归可以不断的化简复杂问题,每一次操作都是相似规则的操作

  2. 递归要有出口,有最终结束的条件

 

递归的使用场合:

 

逻辑比较复杂,并且参数取值比较大,通过循环难以解决的问题。

用递归解决可以化简问题的复杂程度,因为每一次执行函数体的时候问题都不复杂。

并且每执行一次函数体,问题就被化简一次,直到到达设置的递归结束条件的时候,整个问题求解结束。

 

 

 

 

举例:

1.阶乘

public static long jiecheng(int n){

 long result=1;

 //n的阶乘就是求n乘以n-1的阶乘

 if(n>1)

 {

 result=n*jiecheng(n-1);

 }

 //递归结束条件

 if(n==1) {

 result=1;

 }

 return result;

 }

 

 

2.经典汉诺塔问题

 

 

 

 

要求就是将n个盘子从a经过b移动到c

不管盘子移动到那根柱子都是大盘子在下小盘子在上

每次只能移动一个盘子

 

From-----------------middle---------------to

思路:

  1. 将上面的n-1个盘子从from柱子经过to移动到middle

  2. 将第n个盘子直接移到to

  3. middle上面的n-1个盘子经过from柱子移动到to

package yantai;

 

public class Hanio {

/**

 * 

 *@param n

 *@param from

 *@param middle

 *@param to

 *思路:

1.将上面的n-1个盘子从from柱子经过to移动到middle

2.将第n个盘子直接移到to

3.middle上面的n-1个盘子经过from柱子移动到to

 

 */

public void hanio(int n,String from,String middle,String to){

if(n==1){

System.out.println(""+n+"号盘子从"+from+"移动到"+to);

}

else{

hanio(n-1,from,to,middle);

System.out.println(""+n+"号盘子从"+from+"移动到"+to);

hanio(n-1,middle,from,to);

}

}

 

}

 

 

习题:

 

/**

 *  如果一个数等于其所有因子之和,我们就称这个数为"完数",例如6的因子为1,2,3  6=1+2+3  

 6就是一个完数.请编程打印出1000以内所有的完数

 */

 

}

0 0