「递归」在算法初学者眼中总是一个令人头疼的问题
但其实,这种可以将一个问题拆解为多个重复子问题的算法
只要我们掌握了其中的 “套路” ,便可以游刃有余的解决所有递归类问题。
下面我们就开始吧~
一、青蛙跳台阶
我们首先以最简单的「青蛙跳」为例子来拆解递归问题
剑指 Offer 10- II. 青蛙跳台阶问题【超级简单】 https://leetcode-cn.com/problems/qing-wa-tiao-tai-jie-wen-ti-lcof/
问题定义:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。
第一步:明确递归关系
当我们确定了一个问题是可以使用递归思想解决的时候,我们一定可以明确其中的递归关系,即该问题的子问题之间存在的函数关系。
在本题中,我们要 求解青蛙跳上一个 n 级的台阶总共有多少种跳法;
我们知道青蛙一次只可以跳1级或2级的台阶,那么在小蛙