经典算法系列之:递归

1、前言

算法,在计算机中的地位,就相当于人类大脑的决策中枢系统,哪怕最简单的算法,其精妙的思维方式,都可以让人开启一扇新的视窗。

算法,它不仅仅只是狭义的用来解决计算机科学领域的问题,更是一种“思维方式”。算法思维,是一种深度思考和创造的过程。

算法,只有真正理解了,而不只是所谓的知道,并将应用到生活、工作、学习等各个方面,它将一定使人受益终生。

2、原理推导

递归,递归是方法循环调用自己,直到求出结果满足条件才停止循环的算法。

示例:求5的阶乘,计算公式为N! = N * (N- 1)!
//按照公式推导,5!= 5*(5 - 1)!
public int factorial5(int n){
    return n * factorial4(n - 1);
}
 //按照公式推导,4!= 4*(4 - 1)!
  public int factorial4(int n){
    return n * factorial3(n - 1);
}
 //按照公式推导,3!= 3*(3 - 1)!
public int factorial3(int n){
    return n * factorial2(n - 1);
}
 //按照公式推导,2!= 2*(2 - 1)!
public int factorial2(int n){
    return 2;
}

程序调用从factorical5到factorical2,每一个调用需要依赖下一个的返回结果,程序执行顺序,先得到2的阶乘,返回给3的阶乘,返回算出4的阶乘,最终获得5的阶乘结果。

3、代码示例
/**
 * 递归计算阶乘
 */
public class Factorial {

    public int factorial(int n){
        if(n == 1){
            return 1;
        }

        return n * factorial(n - 1);
    }

    public static void main(String[] args) {
        Factorial factorial = new Factorial();
        int result = factorial.factorial(5);
        System.out.println("-----思维的持续-----:"+result);
    }

}
4、禅定时刻

递归算法,是把一个大问题转化为一个个同等的小问题,通过逐个解决小问题来完成最终解决大问题的思路,简化问题。

作者简介
思维的持续,一个真的有思想,不穿格子衬衫的程序员。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值