引言
作为一名程序员,算法是不可或缺的。每个人对算法的敏感度不一样,就想每个人对数学的敏感度一样,有些人逻辑能力就是很强。有一说一,博主个人觉得自己的数学学的不咋滴,但是像我这样笨笨的人,我可以多复习,多推演嘛。今天我想写的是关于递归的理解和使用,我会介绍一下递归的规则,然后用简单和比较难的例子进行学习。
技术点:
1、递归是函数对自身的调用,调用分为直接调用和间接调用,直接调用是指在函数体中调用自身,间接调用是调用别的函数,而这些别的函数又调用函数本身。它主要是把大问题变成小问题,使得代码更加简洁。理解递归需要有一定的抽象能力。
何时使用递归
在什么情况下使用递归呢?博主在判断某个需求是否要用递归实现主要分为以下几个步骤:
a、根据需求画图,把流程用图形的形式展现出来,会帮助你理解
b、觉得它是一个递归,那就尝试建立它的数学函数模型
c、用代码进行实现数学函数模型
d、代码推导,与需求是否一致
在知道步骤之后,我们必须要知道递归的几个原则,在这之前,我们有必要知道递归在代码中的骨架是如何的:
method(){
if(条件满足)
return;//结束递归(建立在基准情况之上)
else
method()//继续递归(不断推进)
}
a、基准情况:函数出口,也就是说此时的函数的值可以直接算出,不需要通过递归求得。或者理解为最后一次递归操作。
b、不断推进:意思就是说每次进行一次递归,那么下次需要的递归会逐渐靠近基准情况,注意这个逐渐靠近是建立在能到达基准情况的,比如说下面这段递归代码:
package com.bw;
/**
* @author brickworker
* 关于类RecursiveTest的描述:递归展示类
*/
public class RecursiveTest {