递归

A方法调用B方法,我们很容易理解!

递归:A方法调用A方法!也就是自己调用自己;

利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大的减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。

递归结果包括两个部分:

  • 递归头部:什么时候不调用自身方法。如果没有头,将陷入死循环。
  • 递归体:什么时候需要调用自身方法。

经典例子:

  阶乘:就是:n! = 1*2*3...n;1! =1; 2! = 2*1;

package com.steven.method;

public class Factorial {
    public static void main(String[] args) {
        Factorial factorial = new Factorial();
        int result = factorial.f(3);
        System.out.println(result);
    }

    public  int f(int n){
        if(n == 1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}

注:递归一般使用于小量的计算。如果是大量的就容易造成机器卡死。例如输入:f(100),f(1000)试试,我们的电脑没有这么大的计算能力,很容易就卡死。所以使用递归的时候要谨慎。

posted @ 2020-06-02 22:27  玉面小飞龙  阅读(106)  评论(0编辑  收藏  举报