JAVA怎样理解递归

直接给你一段代码,自己理解吧:public class Main {public static void main(String args) { System.out.println("The factorial of 10 is " + factorial(10)); }// 计算阶乘的方法,典型的递归方法 public static long factorial(long n) {if (n \u0026gt;= 1) {//递归方法特点一:在方法中调用自己 return n * factorial(n - 1); } else {//递归方法特点二:有至少一个出口条件 return 1; } }}再来个程序员装逼常用的,斐波纳契数列,熟悉递归的一分钟写好:public class Main { public static void main(String args) { System.out.println("The factorial of 10 is " + factorial(10)); //print 20 fibonacci sequence for (int i = 0; i \u0026lt; 20; i++) { System.out.print(fibonacci(i)+" "); } }// 计算阶乘的方法,典型的递归方法 public static long factorial(long n) { if (n \u0026gt;= 1) { //递归方法特点一:在方法中调用自己 return n * factorial(n - 1); } else { //递归方法特点二:有至少一个出口条件 return 1; } }// 计算斐波那契数列的方法:斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) public static int fibonacci(int n){ switch(n){ //出口条件一 case 0: return 0; //出口条件二 case 1: return 1; //在方法中调用自己 default: return fibonacci(n-1)+fibonacci(n-2); } }}
■网友
可以这么理解:

我爷爷的爷爷的爷爷的爷爷的爷爷 曾经说过:“不懂就Google”。

在以上这句话中,有一个任务就是找到某一个人物来作为句子的主语,假如是CPU在执行上面的任务时,它的过程大概就是以下这样:

private Person 临时爷爷;private Person 目标爷爷 = new Person("目标爷爷");pubblic void find爷爷() { while (临时爷爷 != 目标爷爷){ 临时爷爷 = get爷爷(临时爷爷); } // 终于找到了爷爷}public void get爷爷(Person 爷爷){ return 爷爷.爷爷();}
递归的核心思想就是,一个方法不停地调用自己直到某个条件达到了(“我爷爷的爷爷的爷爷的爷爷的爷爷” 找打了),而这个被递归的方法则是这个任务中的一个单元操作(获取“爷爷的爷爷”)。

现在假象一下你就是CPU:
我爷爷 -\u0026gt; 这个不对,接着调用找爷爷的方法;我爷爷 的爷爷 -\u0026gt; 这个不对,接着调用找爷爷的方法;我爷爷 的爷爷 的爷爷 -\u0026gt; 这个不对,接着调用找爷爷的方法;我爷爷 的爷爷 的爷爷 的爷爷 -\u0026gt; 这个不对,接着调用找爷爷的方法;我爷爷 的爷爷 的爷爷 的爷爷 -\u0026gt; 这个不对,接着调用找爷爷的方法;我爷爷 的爷爷 的爷爷 的爷爷 的爷爷 -\u0026gt; 找到啦!方法返回;临时爷爷 被赋值给正确的爷爷。
以上。


■网友
一、所谓递归
在数学与计算机科学中,递归(Recursion)是指在函数的定义中使用函数自身的方法。
二、所谓递归三要素
1、明确递归终止条件;2、给出递归终止时的处理办法;3、提取重复的逻辑,缩小问题规模。

//简单来给你讲一讲这两点,你应该能初步了解递归,首先给你一段代码public class Recursion(){\t public static void main(String args) {\t \tLong l =fibonacci(10);\t \tSystem.out.println(l);\t\t}\t public static Long fibonacci(int i){\t if(i==1 || i==2)\t return 1L;\t else\t return fibonacci(i-1)+fibonacci(i-2);\t }}


推荐阅读