当前位置: 首页 > article >正文

递归的本质

字节面试题叠罗汉,很遗憾没想出来,看了答案挺巧妙的,但是居然是个案例题。。。

复习一下递归的本质

正面解决问题

利用子问题来解决

可以通过规约推导的,基本可以用递归解决!

在写这道算法题时,我想规约中间步骤,嗯是的,我想到了规约,规约的结论可以递归解释,但是这个过程很复杂,但是这个可以递归到子问题!

1.抽象目标能力 2.利用目标能力给出有边界的解

1、抽象目标能力: A-->C其实是一个能力:搬运大于N的底座 + N到1到任何一个位置,有一个中转站点。

那么其实我们可以简单把N块看成1块和N - 1块因为我们有这个能力。

2.那么两块我们就可以进行推导了。这个地方是确定的,可以看成抽象的两块。

递归的本质

函数状态的计算,上面的式子不满足纯函数

好的,以下是纯函数在软件开发中的好处,用简单文字概括:

  1. 代码更清晰:纯函数只依赖输入,逻辑简单易懂。

  2. 容易维护:修改纯函数时,不用担心影响其他地方。

  3. 测试简单:输入固定,输出固定,测试方便。

  4. 并发友好:纯函数没有副作用,适合多线程或并发执行。

  5. 可复用性强:纯函数独立性强,可以在不同地方重复使用

状态的抽象

状态的转换

状态递归

有了每个状态转移,我们甚至可以画出图片

递归与栈

兔子数列

记忆化和待计算的集合即可,确实与顺序无关

同理,上面叠罗汉也可以进行非递归实现

如果随机选择pending计算的,可能会浪费

但是以递归数和栈的记忆化顺序可以减少这个浪费

如何最快画树?

递归和规约互为逆反,如果可以规约,很大程度可以递归

课后题

算法竞赛题目可以学到的思想还是不少的。


http://www.kler.cn/a/516679.html

相关文章:

  • IDE提示:因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170
  • Linux安装mysql5.7
  • 使用github提交Pull Request的完整流程
  • 大模型应用与部署 技术方案
  • 小样本学习中的Prototypical Network(原型网络)详解
  • SQL UNION 和 UNION ALL 区别
  • Rman还原
  • Yii框架中的Cart组件:实现购物车功能
  • GC(垃圾回收)的分类
  • 使用 Elasticsearch 导航检索增强生成图表
  • linux-centosubuntu本地源配置
  • 蓝桥杯练习日常|c/c++竞赛常用库函数
  • 使用Python爬虫获取1688店铺所有商品信息的完整指南
  • C#高级:常用的扩展方法大全
  • ubuntu系统docker环境搭建
  • STM32调试手段:重定向printf串口
  • 重载C++运算符
  • salesforce FIELD_FILTER_VALIDATION_EXCEPTION
  • LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)
  • 假期day1
  • NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
  • 文献阅读 250123-Accelerated dryland expansion under climate change
  • 从 TCP/IP 演进看按序流与性能
  • tortoiseSVN图标缺少绿色钩/tortoiseSVN图标不显示解决方案
  • EDI安全:2025年数据保护与隐私威胁应对策略
  • 【面试】Java 记录一次面试过程 三年工作经验