JAVA方法定义和调用以及递归

119 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

方法的定义

定义方法

[修饰符] 方法返回值类型 方法名(形参列表 ) { 方法体 return 返回值; 例如 :} public static int add(int a, int b, int c) { int k = a + b + c; return k; } 修饰符:封装性时再讲,决定了方法的工作范围

返回值类型:必选,如果没有返回值,须写void。方法只能返回一个值

方法名:

参数列表:可以0个、1个、多个,需要同时说明类型。称为形式参数

方法的调用

1.方法的嵌套调用 Java语言中的方法定义都是互相独立的,即一个方法的方法体里不能包含另一个方法的定义。 但一个方法的方法体里却可以调用另外的方法,即方法的嵌套调用, 2.方法的递归调用 在一个方法的方法体中又调用自身,称为方法的直接递归调用,如果一个方法通过调用其他方法间接地调用到自身,则称为方法的间接递归调用。 大多数情况是直接递归调用,即方法直接调用自身。

java递归方法,自己调用自己

例:定义阶乘 public class TestRecursion { public static long factorial(int n) { if (n == 1) { 递归头:什么时候不调用自身方法 return 1; } else { return n * factorial(n - 1); 递归体:什么时候需要调用自身方法 } } public static void main(String[] args) {System.out.println(factorial(10)); } }

斐波那锲数列

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 分析数列 :斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … public static void main(String[] args) { System.out.println("请输入月数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = run(n-1) + run(n-2); //递推公式 System.out.println("第"+ n + "个月有" + m + "对兔子"); scanner.close(); }

public static int run(int n) { //递归方法 if(n==1||n==2) return 1; else return run(n-1)+run(n-2); //递归调用 } }

java递归方法,自己调用自己

例:定义阶乘 public class TestRecursion { public static long factorial(int n) { if (n == 1) { 递归头:什么时候不调用自身方法 return 1; } else { return n * factorial(n - 1); 递归体:什么时候需要调用自身方法 } } public static void main(String[] args) {System.out.println(factorial(10)); } }

斐波那锲数列

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 分析数列 :斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … public static void main(String[] args) { System.out.println("请输入月数:"); Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int m = run(n-1) + run(n-2); //递推公式 System.out.println("第"+ n + "个月有" + m + "对兔子"); scanner.close(); }

public static int run(int n) { //递归方法 if(n==1||n==2) return 1; else return run(n-1)+run(n-2); //递归调用 } }