函数(Function)
字数
877 字
阅读时间
4 分钟
函数是一段具有特定功能的代码块,可以通过一个名字来调用它执行。
你给它一个命令(传入参数),它帮你完成一项任务(执行逻辑),有时候还会返回结果(返回值)。
函数就是一段可以重复使用的代码,它能接收数据(参数)、处理数据,并可能返回结果(返回值)。它让程序更清晰、更简洁、更容易维护。
函数的基本结构
js
[访问修饰符] [返回类型] [函数名]([参数列表]) {
// 函数体:你要执行的代码
return [返回值]; // 如果有返回值的话
}
- 📌 示例:
js
public int add(int a, int b){
int sum = a + b;
return sum;
}
函数的作用和分类
🧩 作用
作用 | 描述 |
---|---|
封装逻辑 | 把一段常用代码封装起来,避免重复编写。 |
提高可读性 | 给函数起个简单易懂的名字,方便记录和看懂 |
便于维护 | 如果需要修改功能,只需要修改对应的函数内容 |
模块化开发 | 将大问题拆分成多个小问题,每个问题由一个函数解决 |
分类(按照返回值)
js
// 1. 无参数、无返回值
public void sayHello() {
System.out.println("你好!");
}
// 2. 有参数、无返回值
public void printSum(int a, int b) {
System.out.println("总和是:" + (a + b));
}
// 3. 有参数、有返回值
public int multiply(int a, int b) {
return a * b;
}
// 4. 无参数、有返回值
public String getGreeting() {
return "欢迎来到 Java 世界!";
}
💡 小练习
🎯编写一个名为 max 的函数,接收两个整数作为参数,返回较大的那个。
示例代码
js
int result = max (10, 20);
🎯定义一个函数,计算一个整数数组的总和
示例代码
js
int[] numbers = {1, 2, 3, 4, 5};
int total = sumArray(numbers); // 返回 15
🎯定义一个函数,将字符串首字母大写其余小写
示例代码
js
String result = capitalize("hELLo"); // 返回 "Hello"
递归函数
🧠 什么是递归函数?
概念:就是在一个函数的定义或执行过程中,直接或间接地调用自己本身。
要素 | 说明 |
---|---|
基本情况 | 递归停止的条件,防止无限递归 |
递归步骤 | 函数调用自己,并将问题缩小为更简单的子问题 |
结构
js
public void recursiveFunction() {
// 终止条件(Base Case)
if (满足某个条件) {
return; // 停止递归
}
// 业务逻辑(可选)
// 递归调用(Recursive Call)
recursiveFunction();
}
⚠️ 关键点:
必须有终止条件(Base Case),否则会无限调用导致栈溢出(StackOverflowError)。 每次递归调用都应该使问题规模变小,逐步接近终止条件。
经典案例
计算阶乘(Factorial)
阶乘定义
- n! = n * (n - 1)!
- 0! = 1(这就是 Base Case)
js
//递归方法
public int factorial(int n){
int result = factorial(3)
//终止条件,防止无线递归
if (n == 0){
return 1;
}
return n * factorial(n - 1);//调用递归
}
//循环写法
public int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}