一、概述:
Java递归:简单说就是函数自身直接或间接调用函数的本身。
二、应用场景:
若:一个功能在被重复使用,并每次使用时,参与运算的结果和上一次调用有关,这时就可以使用递归来解决这个问题。
使用要点:
1,递归一定明确条件。否则容易栈溢出。
2,注意一下递归的次数。
三、示例:
最简单的递归演示
public class recursionDemo { public static void main(String[] args) { show(); } private static void show() { method(); } private static void method() { show(); } }
四、实际示例
我们都知道 6的二进制是110,那么程序是怎么执行的呢?
代码示例:
public static void main(String[] args) { toBin(6); } private static void toBin(int num) { if (num>0){ //取余 System.out.println(num%2); toBin(num/2); } }

运行过程:

2、递归演示二:计算1-5,求和
public static void main(String[] args) { //1-5求和 int sum = getSum(5); System.out.println(sum); } private static int getSum(int num) { int x=9; if (num==1){ return 1; } return num+getSum(num-1); }

程序运行图:

五、递归的缺点
在使用递归时,一定要考虑递归的次数,负责很容易造成虚拟机 “栈溢出”。
仍然使用上面的求和代码,只是这次将求和基数变为 ,看看结果如何
public static void main(String[] args) { //1-求和 int sum = getSum(); System.out.println(sum); } private static int getSum(int num) { int x=9; if (num==1){ return 1; } return num+getSum(num-1); }
果然就造成了虚拟机栈溢出。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229045.html原文链接:https://javaforall.net
