美文网首页
快速理解递归

快速理解递归

作者: 开发者zhang | 来源:发表于2018-03-23 13:17 被阅读0次

*数学归纳法理解

数学归纳法是:
1)验证 n=1时成立 
2)假设 n - 1 时成立,由此出发证明 n 时成立。

递归是:
1) 计算 base case( 相当于 n = 1) 
2) 假设我们已经计算出 n - 1 时的结果,如何由此出发计算 n 。这两者都是只关注base case,和 n-1、n间的过渡,而不关注每一步具体的运算。

  • 斐波那契数列
能表示成递归的就是数学归纳法和菲博那契数列。
比如:f(n) = f (n - 1) + f(n - 2), f(1) = 0, f(2) = 1
变成如下形式:
def f(n):
  if n < 0:
    raise Exception()
  elif n == 1:
    return 0
  elif n == 2:
    return 1
  else:
    return f(n - 1) + f(n - 2)

  • 其他理解
  1. 写出递归函数也就是要处理好递归的3个主要的点:
    a)出口条件,即递归“什么时候结束”,这个通常在递归函数的开始就写好;
    b) 如何由"情况 n" 变化到"情况 n+1", 也就是非出口情况,也就是一般情况——"正在"递归中的情况;
    c) 初始条件,也就是这个递归调用以什么样的初始条件开始

  2. 可以说,上述a,b,c三个条件组成了我们的递归函数;解决好上述3点,也就很容易地写出一个递归函数;剩下的就是去学习学习“数学归纳法”,请自己google之;不许要你称为归纳法专家,但只需要认证体会它的思路,对于你理解和创造递归函数有很大帮助

相关文章

  • 快速理解递归

    *数学归纳法理解 斐波那契数列 其他理解 写出递归函数也就是要处理好递归的3个主要的点:a)出口条件,即递归“什么...

  • 递归就这么简单

    递归介绍 本来预算此章节是继续写快速排序的,然而编写快速排序往往是递归来写的,并且递归可能不是那么好理解,于是就有...

  • 简易快排和二分查找

    1.快排 快速排序有多种实现方式,有递归和非递归,之前遇到的解法多是递归的,而且分成了两部分代码,较难理解和使用,...

  • CSI讲义8:理解递归

    所有的计算都是递归;要理解递归首先要理解递归。 程序设计思想之一“递归”历来是同学们的理解难点。据说,**要理解递...

  • 数据结构之理解递归

    理解递归 要理解递归, 首先要理解递归 --佚名 递归是一种解决问题的方法, 他从解决问题的各个小部分开始, 知道...

  • 音视频开发之旅(24) 算法系列-快速排序

    目录 递归 快速排序 资料 收获 一、递归 递归就是自己调用自己递归递归,有递就要有归,只递不归导致程序崩溃。为了...

  • 理解递归

    反转链表 还是老样子,我们先假设n-1个链表已经反转完成了: 那么此时我们应该怎么做呢?此时1这个元素的next指...

  • 理解递归

    从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和...

  • 理解递归

    递归的概述 摘取维基百科关于递归的描述:递归(英语:Recursion),又译为递回,在数学[https://zh...

  • 斐波那契数列(Fibonacci)的几种实现

    斐波那契数列,定义: 递归求解 普通递归 尾递归 非递归递推解 利用矩阵计算 通过矩阵的快速幂实现 Matrix....

网友评论

      本文标题:快速理解递归

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