如何构建递归函数

本文介绍了如何理解和构建递归函数,强调先理解算法过程的重要性。通过举例说明递归问题的分割,输入和输出变量的确定,以及递归函数主体的构造。详细解释了从顶到底和从底到顶两种递归逻辑,并通过迷宫问题和二叉树的表达式求值示例展示递归函数的实际应用。
摘要由CSDN通过智能技术生成

前言

        最近看到好多小伙伴都在抱怨不会构造递归函数,尤其是进入了树这一章之后,变得更加蒙圈,我特意前来分享一下我关于递归函数的一些理解。如有补充、纠错,欢迎讨论。

正文

        首先要知道一点,任何一个算法,你在构建之前必须要自己有能力跟着这个算法走一遍,比如我给你一组符号aaaaaaaaaaabccd,让你去构造一个哈夫曼树,你自己用纸算不出来,你就不可能写得出递归,所以要先去理解这个算法的过程才能落实到算法的实现。

        在确定这个大前提的情况下,我们第一步要进行问题的分割,递归就是将一个大问题分割成无数的小问题去求解,举个简单的例子:2+\sqrt{2+\sqrt{2+\sqrt{2+...}}} 这样一个算式,我们可以清楚地发现,去掉2+和大根号后,剩下部分和整体是相同的,这其实就是一个分割的过程。而求前n个数的和,1+2+3+...+n,我们也可以发现,去掉+n之后,其余的数是求前n-1个数的和。递归问题的分割,无关乎分割部分的顺序,我可以从前往后割,也可以从后往前割,没有关系。

        问题的分割结束之后,我们就可以进行递归输入输出变量的确定,这一步很重要。输入和输出要保持高度的一致性,那么以1+2+3+...+n为例,这个示例的特征是n,n是int型的变量,所以输入是int,那么我们分割的小问题是前n-1项的和,返回值也是int

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘下来邦我吧

头发加了一根

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值