递归思想与KMP算法

本文介绍了递归思想,包括递归定义、调用与回退阶段,并以斐波那契数列为例进行说明。接着讨论了字符串匹配算法,如BF算法和KMP算法,详细解释了KMP算法的工作原理和next数组的生成,强调了避免不必要的回溯以提高效率。最后提到了KMP算法的局限性和改进思路。
摘要由CSDN通过智能技术生成

递归思想与KMP算法

很有幸读到了很实用优秀的一篇关于kmp算法的解释博客通俗易懂的字符串匹配KMP算法及求next值算法,在写博客前推荐给大家。
接下来是我自己对递归相关知识的理解和总结

迭代和递归
迭代是适合对数据掌握很多的,知道有几层。递归是适合掌握很少信息的。现实问题中能用迭代就不要用递归,因为效率很低。迭代时循环结构,而递归是选择结构。

斐波那契数列的递归实现
以兔子的繁衍为例:
在这里插入图片描述
递归定义:一个直接调用自己或者间接调用自己的函数,叫做递归函数。每一个递归必须至少有一个条件,当满足这个条件时,递归结束,不然就会陷入永无止尽的循环递归。

递归可以使程序结构更清晰,减少读懂程序的时间。但是大量的递归会建立很多副本,很消耗内存和时间

递归有调用和回退两个阶段,回退是调用的逆序。递归是一个过程,每一次调用过程都是一样的。如:算n!

分治思想:把问题分解成一个个小模块,每个模块都是类似的问题,然后一个个解决每个模块的问题。

实际应用
汉诺塔 借助中间的柱子实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值