Java中方法的基本用法、重载和递归

1. 方法的基本用法

1.1 什么是方法(method)

方法就是一个代码片段. 类似于 C 语言中的 “函数”.
方法存在的意义

1.是能够模块化的组织代码(当代码规模比较复杂的时候)。
2.做到代码被重复使用, 一份代码可以在多个位置使用。
3.让代码更好理解更简单。
4.直接调用现有方法开发, 不必重复造轮子。

1.2 方法定义语法

// 方法定义 
public static 方法返回值 方法名称([参数类型 形参 ...]){    
    方法体代码;  
      [return 返回值];
}
// 方法调用 
返回值变量 = 方法名称(实参...);

实现一个方法实现两个整数相加


class Test {   
 public static void main(String[] args) {
        int a = 10;        
        int b = 20;               
         // 方法的调用        
        int ret = add(a, b);        
        System.out.println("ret = " + ret);  
 }
    // 方法的定义   
     public static int add(int x, int y) {
             return x + y;   
              } 
}
// 执行结果 ret = 30 

1.3 方法调用的执行过程

基本规则
1.定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.
2.当方法被调用的时候, 会将实参赋值给形参.
3.参数传递完毕后, 就会执行到方法体代码.
4.当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行.
5.一个方法可以被多次调用.

计算 1! + 2! + 3! + 4! + 5

class Test {
    public static void main(String[] args) {
            int sum = 0;
            for (int i = 1; i <= 5; i++) {
                  sum += factor(i);
            }       
               System.out.println("sum = " + sum);
     }
    public static int factor(int n) {
            System.out.println("计算 n 的阶乘中! n = " + n);
                    int result = 1;
                    for (int i = 1; i <= n; i++) {
                        result *= i;
                    }       
                    return result;
      }
 }

1.4 实参和形参的关系

交换两个整形变量

class Test {    
      public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);
       System.out.println("a = " + a + " b = " + b);
      }
    public static void swap(int x, int y) {
            int tmp = x;
                x = y; 
                y = tmp;
      }
 }
// 运行结果 a = 10 b = 2

实参-----》形参传值的时候,一定要个数,类型都要匹配。
在方法的内部,不能嵌套方法,只能调用方法。
方法名采用小驼峰的方式 例如 :numberName();
实参给形参传值的方式有几种?
C:按值传递 按址传递
Java:按值传递 传引用———》引用也是值
特点: 形参的改变 并不会影响 实参的值

1.5 没有返回值的方法

方法的返回值是可选的. 有些时候可以没有

class Test {
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     print(a, b);
  } 
  public static void print(int x, int y) {
    System.out.println("x = " + x + " y = " + y);
  }
 } 

另外, 如刚才的交换两个整数的方法, 就是没有返回值的.

2. 方法的重载

有些时候我们需要用一个函数同时兼容多种参数的情况, 我们就可以使用到方法重载

针对同一个类:
方法名相同
方法的参数不同(参数个数或者参数类型)
方法的返回值类型不影响重载.

class Test {
  public static void main(String[] args) {
     int a = 10;
     int b = 20;
     int ret = add(a, b);
     System.out.println("ret = " + ret);
   } 
 
 public static int add(int x, int y) {
    return x + y;
 } 
 
 public static double add(int x, int y) {
    return x + y;
 }
} 
 
// 编译出错 Test.java:13: 错误: 已在类 Test中定义了方法 add(int,int)        
     public static double add(int x, int y) { 
                          ^ 
    1 个错误
     

当两个方法的名字相同, 参数也相同, 但是返回值不同的时候, 不构成重载.

3. 方法递归

一个方法在执行过程中调用自身, 就称为 “递归”。
递归相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式.

例如, 我们求 N! 起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.
递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)!
递归求 N 的阶乘

import java.util.Scanner;
public class Lzc{
public static int zed(int n){
			if(n == 1){
			return 1;
			}	
		return n *zed(n - 1);
	}
	public static void main (String[] args){
		System.out.println("请输入n的值:");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		System.out.println(zed(n));
	}
}

递归求 1 + 2 + 3 + … + 10

public static int yasuo(int n){
		if (n == 1){
			return 1;	
		}
		return n + yasuo(n - 1);
	}
	public static void main(String[] args){
		System.out.println(yasuo(10));
	}

求斐波那契数列的第 N 项

public static int feibonaco(int n){
		if (n ==1 || n == 2){
			return 1;
		}else{
			return	feibonaco(n - 1) + feibonaco(n - 2);
		}
	}
	public static void main(String[] args){
		System.out.println("请输入斐波那契数列的第n项:");
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int num = feibonaco(n);
		System.out.println(num);
	}

递归小结

递归是一种重要的编程解决问题的方式.
有些问题天然就是使用递归方式定义的(例如斐波那契数列, 二叉树等), 此时使用递归就很容易解
有些问题使用递归和使用非递归(循环)都可以解决. 那么此时更推荐使用循环, 相比于递归, 非递归程序更加高效.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园建设方案旨在通过融合先进技术,如物联网、大数据、人工智能等,实现校园的智能化管理与服务。政策的推动和技术的成熟为智慧校园的发展提供了基础。该方案强调了数据的重要性,提出通过数据的整合、开放和共享,构建产学研资用联动的服务体系,以促进校园的精细化治理。 智慧校园的核心建设任务包括数据标准体系和应用标准体系的建设,以及信息化安全与等级保护的实施。方案提出了一站式服务大厅和移动校园的概念,通过整合校内外资源,实现资源共享平台和产教融合就业平台的建设。此外,校园大脑的构建是实现智慧校园的关键,它涉及到数据心化、数据资产化和数据业务化,以数据驱动业务自动化和智能化。 技术应用方面,方案提出了物联网平台、5G网络、人工智能平台等新技术的融合应用,以打造多场景融合的智慧校园大脑。这包括智慧教室、智慧实验室、智慧图书馆、智慧党建等多领域的智能化应用,旨在提升教学、科研、管理和服务的效率和质量。 在实施层面,智慧校园建设需要统筹规划和分步实施,确保项目的可行性和有效性。方案提出了主题梳理、场景梳理和数据梳理的方法,以及现有技术支持和项目分级的考虑,以指导智慧校园的建设。 最后,智慧校园建设的成功依赖于开放、协同和融合的组织建设。通过战略咨询、分步实施、生态建设和短板补充,可以构建符合学校特色的生态链,实现智慧校园的长远发展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值