美文网首页
数据结构与算法之递归

数据结构与算法之递归

作者: 谦卑王生 | 来源:发表于2019-04-19 22:03 被阅读0次
何为递归?

所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
我们可以把” 递归 “比喻成 “查字典 “,当你查一个词,发现这个词的解释中某个词仍然不懂,于是你开始查这第二个词。可惜,第二个词里仍然有不懂的词,于是查第三个词,这样查下去,直到有一个词的解释是你完全能看懂的,那么递归走到了尽头,然后你开始后退,逐个明白之前查过的每一个词,最终,你明白了最开始那个词的意思。(摘自知乎的一个回答)

递归函数

所谓递归函数是自身调用自身,在执行递归函数时,系统会把递归函数的全部信息压入栈中,且每次进行子操作时,栈会记录当前操作的变量,待子操作完成时恢复最初的现场。总之,一切非递归函数皆可转换为递归函数。

递归函数的复杂度

T(n) = aT(n/b) + O(n ^d)

    1. log(b,a) > d ===> 复杂度为O(n^ log(b,a))
  • 2.log(b,a) = d ===> 复杂度为O(n^d * logN)
  • 3.log(b,a) < d ===> 复杂度为O(n^d)
    其中,T(n) 表示数据样本量为n时的时间复杂度,aT(n/b)表示自操作的时间复杂度,其中a表示子操作次数,n/b表示子操作的数据样本量,O(n^d)表示除去子操作外常规的比较时间的时间复杂度。注意,使用上述函数的前提是子操作的样本量应该相等。

举列说明:求数组的最大值

public class Recursion {
    public static int getMax(int []arr, int L, int R ) {
          if(L == R) {
              return arr[L];
          }
          int mid = (L+R)/2;
          int maxLeft = getMax(arr, L, mid);
          int maxRight = getMax(arr, mid+1, R);
          return Math.max(maxLeft, maxRight);
    }
}

上述递归函数中,将一个数组划为左右两部分进行查找最大值,然后进行比较,得出数组的最大值,可以看出,每次子操作的样本量为n/2,总共左右两次操作,d=0,常规的比较时间为O(1),故本次递归函数的时间复杂度为T(n) = 2(n/2) + O(1);

相关文章

  • 数据结构与算法

    数据结构与算法之美 数据结构与算法之美1--如何学数据结构与算法之美2--复杂度分析(上)数据结构与算法之美3--...

  • 数据结构与算法(8)-栈与递归的关系

    数据结构与算法(7)-栈 递归: 在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。也就是说,递归算法是...

  • 递归的妙用

    递归算法是在函数或子过程的内部,直接或者间接地调用自己的算法。学过算法与数据结构的都知道,通过递归可以将一个复杂的...

  • 数据结构与算法之递归

    何为递归? 所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一...

  • 递归的Java实现

    算法 数据结构——递归的运行机制:递归的微观解读 递归是一种应用非常广泛的算法(或者编程技巧)。递归求解问题的分解...

  • 206. 反转链表

    使用头插法实现 2019.8.5----MJ数据结构与算法更新 1、Java递归 这个递归真的想了好久好久才想明白...

  • 29.算法入门

    算法与数据结构基础 一、基础算法思想二分: 递推: 枚举: 递归: 分治: 贪心: 试探: 模拟: 二、简单数据结...

  • 数据结构与算法之 递归与回溯算法

    概念 简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代...

  • 重温:数据结构与算法 - 03数组

    数据结构与算法之美 - 数组 数据结构与算法之美-学习大纲 什么数组? 数组是一种 线性表 数据结构。它用一组 连...

  • 数据结构之栈

    (注释:整篇数据结构与算法文集,部分总结于王争的《数据结构与算法之美》和李明杰的《恋上数据结构与算法》,加上自己的...

网友评论

      本文标题:数据结构与算法之递归

      本文链接:https://www.haomeiwen.com/subject/yffhgqtx.html