目录

一、函数

1. 理解

2. 函数的使用流程

3. 函数的定义位置

二、函数的基本使用

1. 函数的定义

 2. 函数的调用:

 三、参数的使用

1. 多数情况下

2. 形式参数

 3. 实际参数

 代码如下

四、函数的返回值

1. 理解

 2. 返回值的语法

 3. 函数的返回值分类

 4. 函数返回值的处理

 5. return的作用

五、函数的执行机制  

1. 理解

2. 函数的嵌套调用

 六、递归调用

1. 理解

2. 注意

3. 递归的思想

4. 案例

附:练习

1. 写一个函数add,接受两个整数作为参数,返回这两个整数的和;在main函数中调用并打印结果

 2. 写一个函数,接受一个整数n,输出1+2+3+...+n的和;在main函数中调用函数

3. 写一个函数,接受一个整数参数n,输出n个HelloWorld;在main函数中调用此函数

4. 求一个三位数,该三位数等与其每位数字的阶乘之和


一、函数

1. 理解

执行一段特定功能的代码,并且可以通过名字进行反复的调用

2. 函数的使用流程

(1) 函数的定义:确定函数的功能和函数名
      a. 函数的声明:确定函数的名字
      b. 函数的实现:确定函数的功能
   
(2) 函数的调用:通过名字进行反复的使用

3. 函数的定义位置

定义类以内,其他函数以外的位置( main 函数并列 )

二、函数的基本使用

1. 函数的定义

public static void 函数名 (){
  // 函数的实现
}
函数的定义:函数的声明和函数的实现
(1) 函数的声明:
  public static void 函数名 ()
  注意:函数名 ,望文生义,采用驼峰命名法形式命名
(2) 函数的实现: {}

 2. 函数的调用:

(1) 通过函数名直接使用函数对应的功能
(2) 语法:函数名 ();

 三、参数的使用

1. 多数情况下

函数与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使函数完成相应的功能,调用者和函数之间交互的数据,称为参数

2. 形式参数

(1) 形式参数:简称形参,函数和调用者之间的一种约定,约定了调用者需要给函数传递什么数据
(2) 定义:
  public static void 函数名 ( 数据类型
变量名 , 数据类型 变量名 , 数据类型 变量名 3){
       
  }
(3) 使用:形参相当于 函数内部的局部变量
(4) 一个函数可以定义多个形参,称为形参列表(0~n个 )

 3. 实际参数

(1) 实际参数:简称实参,函数调用时,传递的数据
(2) 实参的作用:给形参赋值
(3) 注意:实参的个数、顺序、数据类型必须和形参一致
定义一个函数 selectMax ,接收两个整数 m,n ,打印两个数据中的较大值;在main 函数中调用此函数

 代码如下

package demo;
import java.util.Scanner;
public class Test5{
	public static void main(String[] agrs){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入两个整形数值:");
		int m=sc.nextInt();
		int n=sc.nextInt();
		selectMax(m,n);
	}
	public static void selectMax(int m,int n){
		if(m>=n){System.out.print("MAX="+m);}
		else{System.out.print("MAX="+n);}
		System.out.println();
	}
}

四、函数的返回值

1. 理解

函数和调用者之间的一种数据交互,调用者通过函数获取一些数据结果( 函数给调用者一定的结果)

 2. 返回值的语法

public static 函数返回值 函数名 ( 形参列表 )
{
  // 函数的实现、函数体
}

 3. 函数的返回值分类

(1) 返回值类型为: void ,代表函数没有返回值,函数不需要给调用者任何结果返回
          public static void 函数名 ( 参数 ){}
(2) 返回值类型为: 8 种基本数据类型或是对象,代表函数有返回值,函数必须给调用者返回值对应 类型的数据
          public static 返回值类型 函数名 ( 参数 )
        {
              return xxx;
          }

 4. 函数返回值的处理

(1) 第一种处理方式:定义同类型的变量接收返回值

 5. return的作用

(1) 将函数返回值进行返回值给调用者
(2) 结束当前的函数

五、函数的执行机制  

1. 理解

程序以 Main 函数作为入口,进入 main 函数从上往下依次执行,如果遇到函数的调用,则优先执行被调用的函数内部代码,被调用函数执完毕之后,带着带着返回值返回到调用为止,继续后续代码内容

2. 函数的嵌套调用

被调用的函数内部,又调用了其他的函数

 六、递归调用

1. 理解

一个函数中调用自身函数

2. 注意

如果使用递归解决问题,必须给递归设置一个出口,否则出现无穷递归,最终运行报错,错误信息为:
java.lang.StackOverflowError(栈溢出)

3. 递归的思想

(1) 递进:每一次推进,计算都比上一次变得简单,直至简单到无需继续推进,就能获得结果。也叫到达出口。
(2) 回归:基于出口的结果,逐层向上回归,依次计算每一层的结果,直至回归到最顶层。

4. 案例

package demo;
public class Test6{
 public static void main(String[]
args){
 int r =jieCheng(8);
 System.out.println(r);
 }
 // 函数功能:计算 n的阶乘
 public static int jieCheng(int n)
{
 // n的阶乘 = n * n-1 的阶乘
 
 // 设置一个出口,当 n=1 或是0 ,
结果直接为1
 if(n==1 || n==0) return 1;
 return n * jieCheng(n-1);
 }
}

附:练习

1. 写一个函数add,接受两个整数作为参数,返回这两个整数的和;在main函数中调用并打印结果

package demo;
import java.util.Scanner;
public class zuoye4c1{
	public static void main(String[] agrs){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入两个整型的数:");
		int n=sc.nextInt();
		int m=sc.nextInt();
		int sum=add(n,m);
		System.out.println("sum="+sum);
	}
	//定义一个函数,计算两个数据的和,并返回给调用者
	public static int add(int n,int m){
		int sum = 0;
		sum = n+m;
		
		return sum;
	}
}

 2. 写一个函数,接受一个整数n,输出1+2+3+...+n的和;在main函数中调用函数

package demo;
import java.util.Scanner;
public class zuoye4c2{
	public static void main(String[] agrs){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整型数:");
		int n = sc.nextInt();
		System.out.println("sum="+sum(n));
	}
	public static int sum(int n){
		int x = 0;
		for(int i=1;i<=n;++i){
			x+=i;
		}
		return x;
	}
}

3. 写一个函数,接受一个整数参数n,输出n个HelloWorld;在main函数中调用此函数

package demo;
import java.util.Scanner;
public class zuoye4c3{
	public static void main(String[] agrs){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int n = sc.nextInt();
		PrintH(n);
	}
	public static void PrintH(int n){
		for(int i=1;i<=n;++i)System.out.println("HelloWorld");
	}
}

4. 求一个三位数,该三位数等与其每位数字的阶乘之和

package demo;
public class zuoye4c4{
	public static void main(String[] agrs){
		Every_Equ();
	}
	public static void Every_Equ(){
		for(int i=100;i<=999;i++){
			int a = i/100;
			int b = i%10;
			int c = i/10%10;
			if(i==jiecheng(a)+jiecheng(b)+jiecheng(c))System.out.println("符合条件的数为:"+i);
		}
	}
	public static int jiecheng(int n){
		if(n==1||n==0)return 1;
		return n*jiecheng(n-1);
	}
}

至此第五章结束 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐