目录

一 方法(类似于C语言中的函数)

1 方法的基本语法:

2 注意事项

3 方法调用的执行过程

4 方法的重载

重载的规则(满足以下三个特点):

5 方法的意义

二 递归

前提条件:

概念:

递归执行过程分析:

执行过程图

递归的总结:

三 递归练习


一 方法(类似于C语言中的函数)

1 方法的基本语法:

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

示例:

import java.util.Scanner;public class demotwo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int i = sc.nextInt();int j = sc.nextInt();int ret=add(i,j);//方法的调用System.out.println(ret);}//利用方法实现两个数相加public static int add(int a,int b){//定义方法return a+b;}
}

2 注意事项

(1)public static是关键字,具有特殊的含义

(2)方法定义时,必须要指定参数类型,可以没有参数

(3)方法定义时,可以有返回值,也可以没有返回值,没有返回值时,返回类型应该定义为void

(4)方法定义时的参数为形参,方法调用时就是实参

(5)方法必须定义在类的里面,代码书写调用的位置可以在main()函数上方,也可以写在下方

(6)java中不存在函数声明这种概念

3 方法调用的执行过程

(1)定义方法的时候,不会执行方法的代码,只有调用的时候才会执行

(2)方法被调用的时候,实参的值会赋值给形参

(3)参数传递完毕后,就会执行方法体代码

(4)当方法执行完毕之后(遇到return语句),回到方法被调用的位置,继续往下执行

(5)方法是可以被多次调用的

例题:

public class demotwo {//计算 1! + 2! + 3! + 4! + 5!public static void main(String[] args) {int su = 0;for(int i=1;i<=5;i++){//产生五个数据,利用求阶乘,把五个数的阶乘相加起来su += sum(i);}System.out.println(su);}public static int sum(int n){int ret =1;for(int j = 1;j<=n;j++){//实现阶乘的办法ret *=j;}return ret;}
}

4 方法的重载

重载的规则(满足以下三个特点):

在同一个类下或者继承关系下:

(1)方法名相同

(2)方法的参数不同(参数的个数或者参数类型不同)

(3)参数的返回值类型不影响重载(可以理解为与返回值类型没有什么关系)

5 方法的意义

(1)能够模块化的组织代码(尤其是代码规模是比较复杂的时候)

(2)让代码更加简单,提高代码的可读性

(3)可以重复利用,一个代码可以在多个位置调用

(4)可以直接调用现有方法开发,比较便捷

二 递归

前提条件:

(1)有一个趋于终止的条件

(2)自己要调用自己

概念:

递归:一个方法在执行的过程中调用自身,就称为递归

递归执行过程分析:

public static void main(String[] args) {int n = 5;int ret = factor(n);System.out.println("ret = " + ret);
}
public static int factor(int n) {System.out.println("函数开始, n = " + n);if (n == 1) {System.out.println("函数结束, n = 1 ret = 1");return 1;}int ret = n * factor(n - 1);System.out.println("函数结束, n = " + n + " ret = " + ret);return ret;
}
// 执行结果
函数开始, n = 5
函数开始, n = 4
函数开始, n = 3
函数开始, n = 2
函数开始, n = 1
函数结束, n = 1 ret = 1
函数结束, n = 2 ret = 2
函数结束, n = 3 ret = 6
函数结束, n = 4 ret = 24
函数结束, n = 5 ret = 120
ret = 120

执行过程图

结合执行过程图来看递归就会显得思路比较清晰,解决问题就会显得有方法与思路

递归的总结:

对于递归,有些问题使用递归就会显得非常简单(比如二叉树以及斐波那契数列等),有些程序代码递归与非递归(迭代循环)都可以去实现,那么这个时候就推荐大家使用非递归(迭代循环),效率会显得高一些。

三 递归练习

面对递归,我们需要一些典例来开导一下我们,典例链接:

CSDN

详解java方法与递归相关推荐

  1. 详解Java解析XML的四种方法

    http://developer.51cto.com  2009-03-31 13:12  cnlw1985  javaeye  我要评论(8) XML现在已经成为一种通用的数据交换格式,平台的无关性 ...

  2. 图文详解Java环境变量配置方法

    今天动力节点java学院小编为大家介绍"图文详解Java环境变量配置方法",希望对各位小伙伴有帮助,下面就和小编一起来看看Java环境变量配置方法吧. 首先是要安装JDK,JDK安 ...

  3. java的注解方式_详解Java注解的实现与使用方法

    详解Java注解的实现与使用方法 Java注解是java5版本发布的,其作用就是节省配置文件,增强代码可读性.在如今各种框架及开发中非常常见,特此说明一下. 如何创建一个注解 每一个自定义的注解都由四 ...

  4. java web ip_详解Java Web如何限制访问的IP的两种方法

    前一阵子因为在做项目时碰到了这个功能,现在好好总结一下,至于为什么要限制IP访问,我就不多说了.然后百度了一下,现在主要有两种方式去限制IP访问,第一种是最简单的方便的,第二种是通过过滤器来限制访问. ...

  5. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  6. java sleep唤醒_详解Java中的线程让步yield()与线程休眠sleep()方法

    Java中的线程让步会让线程让出优先级,而休眠则会让线程进入阻塞状态等待被唤醒,这里我们对比线程等待的wait()方法,来详解Java中的线程让步yield()与线程休眠sleep()方法 线程让步: ...

  7. java 重定向 redirect_详解Java从后台重定向(redirect)到另一个项目的方法

    (1)通过ModelAndView跳转 @RequestMapping("alipayforward") public ModelAndView alipayforward(Htt ...

  8. 详解java中的indexOf()方法

    详解java中的indexOf()方法 介绍一下indexOf()的两种用法和实现功能: 1. indexOf(String str): 返回指定字符str在字符串中(方法调用者)第一次出现处的起始索 ...

  9. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

    在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...

最新文章

  1. change python是什么意思_回溯是什么意思?
  2. 从“创业输家”到“创智赢家”
  3. linux shell ddos木马,利用Shell 脚本解决DDOS攻击问题
  4. 简介QTP中的Active Screen
  5. C++在不使用任何算术运算符的情况下将两个数字相加(附完整源码)
  6. TensorFlow:实战Google深度学习框架(二)实现简单神经网络
  7. P2596 [ZJOI2006]书架(fhq treap)
  8. Spring 框架 IOC 与 DI 的总结
  9. 陕西师范大学计算机学院课表,陕西师范大学数学和信息科学学院课程表.doc
  10. 第一次使用并配置Hibernate
  11. C++学习日记1:VS2015环境下,创建基于对话框的MFC工程
  12. script-百度换肤效果
  13. 巧用.bat批处理文件
  14. 面试题-C++软件/客户端开发
  15. mac上彻底删除 搜狗输入法 鼠须管输入法
  16. 网证你申请了吗?怎么使用?
  17. 强化学习笔记: Model-based Approaches(2)
  18. Android 仿2016版京东筛选
  19. 什么是跨域?如何解决跨域?
  20. 将模板内容存储到数据库,通过URL访问报表

热门文章

  1. [问答]-EL1t和EL1h中的后缀t和h分别是什么意思
  2. JWT对称加密非对称加密
  3. 160个Crackme006
  4. MySQL INNER JOIN:内连接查询
  5. 【Docker】备份Docker镜像image、容器container、数据volume
  6. Acwing第 39 场周赛【完结】
  7. 练习C语言二级编程题的一些问题
  8. 秒懂servletContext对象
  9. Spring boot的静态资源映射
  10. python转成exe_将python程序转换成exe程序