Lesson04-方法

本文介绍了Java中的方法概念,包括方法的定义、调用以及设计原则。详细讲解了方法的重载,强调参数列表必须不同作为重载的关键。接着探讨了可变参数的使用,指出其必须作为方法的最后一个参数。最后,深入解析了递归的概念,包括递归头和递归体,并通过阶乘计算示例说明递归的应用和边界条件。递归在简化复杂问题解决时非常有效,但也可能消耗大量栈内存,可能导致溢出。
摘要由CSDN通过智能技术生成

方法

方法的基本概念

  • 方法是解决一类问题的有序步骤
  • 方法包含于类或者对象中
  • 方法在程序中被创建,在其他地方引用

设计方法的原则:一个方法只完成一个功能,这样有利于后期的扩展

Java是值传递!

方法重载

  • 方法名称必须相同
  • 参数列表必须不同
  • 方法的返回值类型可以相同也可以不相同
  • 仅仅是返回值类型不同不足以成为方法的重载

可变参数

  • 在方法声明中,在指定参数类型后面加一个省略号(…)

  • 一个方法只能指定一个可变参数,它**必须是方法的最后一个参数!**任何普通的参数都必须在它前面声明!

递归

一般方法的调用是A方法调用B方法,而递归就是A方法调用A方法。

利用递归可以使用一些简单的程序来解决一些复杂的问题,通常把一些大型且复杂的问题进行层层转化,逐渐转化为一个与原问题相似的,且规模较小的问题来求解,只需要少量的程序就可以描述出解题过程中所需要的多次重复计算,大大减少了代码量。

递归一般包括两个结构:

  • 递归头:什么时候不调用自身方法,如果没有头,将会陷入死循环。
  • 递归体:什么时候调用自身方法。
public static void main(String[] args) {
    //求数的阶乘!
    System.out.println(Factorial(5));
}
//1! =1 f(1) = 1
//2! = 2*f(1)
//3! = 3*f(2)*f(1)
//一层一层逐级向下调用
public static int Factorial(int n) {
    if (n == 1) {
        return 1;
    } else {
        return n * Factorial(n - 1);
    }
}

边界条件:程序可以执行到底的条件(当n=1时)

前阶段:当n≠1的时候,程序将会逐级向下调用

返回阶段:n*(n-1)

当问题基数比较小的情况下,可以使用递归思想来解决问题,但是基数一旦偏大,递归容易占用大量的栈内存空间,甚至会导致栈内存溢出影响机器性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值