数据结构与算法===递归

简介: 数据结构与算法===递归

定义

递归(Recursion)是指函数的自身调用。

这个算法演变为了程序员之间的梗,所表达的意思近似于“套娃”,表示不断重复引用别人的话从而产生循环。

适用场景

这个应该很多的,像一些树的遍历;前序,中序,后序,都可以使用递归来实现。来看看下面的例子吧。

爬楼梯

题目如上,也可以去leetcode上去看看。这个是我很早之前刷过的题,下面看看代码实现

代码实现

先看看C++的吧,如下:

class Solution {
public:
    int climbStairs(int n) {
        if(n <= 3){ return n; }
        int f0 = 2, f1 = 3, ans = 0;
        for(int i = 4; i <= n; ++i) {
            ans = f0 + f1;
            f0 = f1;
            f1 = ans;
        }
        return ans;
    }
};

再看看python的实现吧,如下:

class Solution:
    def climbStairs(self, n: int) -> int:
        if n < 4:
            return n
        ans = 0
        f2 = 2
        f3 = 3
        for i in range(4, n+1):
            ans = f2 + f3
            f2 = f3
            f3 = ans
        return ans

小结

这里采用了递归树的思维,为什么不是直接调用函数呢,可以看下之前讲过的算法时间复杂度,里边有很多重复的操作,就采用了递归的思维,然后做了下调整,用一些临时变量来存储,减少了内部调用。下边给个递归的模板吧,如下:

# Python
def recursion(level, param1, param2, ...):     
  # recursion terminator     
  if level > MAX_LEVEL:      
    process_result     
    return     
  # process logic in current level     
  process(level, data...)     
  # drill down     
  self.recursion(level + 1, p1, ...)     
  # reverse the current level status if needed

这么看还是很清晰的。

相关文章
|
1月前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
1月前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
34 7
|
25天前
|
C++
【洛谷 P1044】[NOIP2003 普及组] 栈 题解(递归+记忆化搜索)
**NOIP2003普及组栈问题**:给定操作数序列1到n,仅允许push(进栈)和pop(出栈)操作。目标是计算所有可能的输出序列总数。输入包含一个整数n(1≤n≤18)。示例输入3,输出5。当队列空时返回1,栈空则只能入栈,栈非空时可入栈或出栈。AC C++代码利用记忆化搜索求解。
17 1
|
1月前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
14 1
|
1月前
|
存储 算法 数据挖掘
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
|
1月前
|
机器学习/深度学习 存储 算法
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
1月前
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
28天前
|
机器学习/深度学习 存储 算法
算法学习:递归
算法学习:递归
19 0
|
28天前
|
算法
二叉树删除节点算法---递归
二叉树删除节点算法---递归
|
28天前
|
算法