深入浅出递归思想

本文深入讲解了递归的概念,通过斐波那契数列和全排列问题,阐述了如何理解和使用递归。递归是函数对自己调用,需要明确基准情况和不断推进的原则。文章还提供了具体的代码实现,帮助读者掌握递归的思考、建模和编程过程。
摘要由CSDN通过智能技术生成

引言

作为一名程序员,算法是不可或缺的。每个人对算法的敏感度不一样,就想每个人对数学的敏感度一样,有些人逻辑能力就是很强。有一说一,博主个人觉得自己的数学学的不咋滴,但是像我这样笨笨的人,我可以多复习,多推演嘛。今天我想写的是关于递归的理解和使用,我会介绍一下递归的规则,然后用简单和比较难的例子进行学习。

技术点:
1、递归是函数对自身的调用,调用分为直接调用间接调用,直接调用是指在函数体中调用自身,间接调用是调用别的函数,而这些别的函数又调用函数本身。它主要是把大问题变成小问题,使得代码更加简洁。理解递归需要有一定的抽象能力。

何时使用递归

在什么情况下使用递归呢?博主在判断某个需求是否要用递归实现主要分为以下几个步骤:

a、根据需求画图,把流程用图形的形式展现出来,会帮助你理解
b、觉得它是一个递归,那就尝试建立它的数学函数模型
c、用代码进行实现数学函数模型
d、代码推导,与需求是否一致

在知道步骤之后,我们必须要知道递归的几个原则,在这之前,我们有必要知道递归在代码中的骨架是如何的:


    method(){
        if(条件满足) 
            return//结束递归(建立在基准情况之上)
        else
            method()//继续递归(不断推进)
    }

a、基准情况:函数出口,也就是说此时的函数的值可以直接算出,不需要通过递归求得。或者理解为最后一次递归操作。
b、不断推进:意思就是说每次进行一次递归,那么下次需要的递归会逐渐靠近基准情况,注意这个逐渐靠近是建立在能到达基准情况的,比如说下面这段递归代码:

package com.bw;

/**
 * @author brickworker
 * 关于类RecursiveTest的描述:递归展示类
 */
public class RecursiveTest {
   

    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值