算法图解-终极版-递归-从前有座山

    科技2022-07-16  115

    递归 到底递归是如何执行的, 首先递归用到的是有限的存储空间, 在ram上存储, 另外, 递归,是对内存空间的重读使用, 图解只是为了方面理解, 但递归是有数量限制的, 不能像迭代那样, 可以无限多的迭代下去。 那么如何递归呢: 如果求F(5)的阶乘, 具体如上图。F(1) = 1, 返回到subvalue = 1, returnValue = 2 * f(1) = 2, 在继续, 直到求出结果。应用求阶乘 def fact(n): if n <=1: return 1 else: sub = fact(n - 1) solution = sub * n return solution fact(5)

    120

    简写:

    def fact(n): if n <=1: return 1 else: return fact(n - 1) * n fact(5)

    120

    求字符串reverse 如果用递归算法, 一定要有终止条件 def reverse(word): if word == "": return word else: subProblem = word[1:] subSolution = reverse(subProblem) solution = subSolution + word[0] return solution reverse("abc")

    ‘cba’ 简写:

    def reverse(word): if word == "": return word else: return reverse(word[1:]) + word[0] reverse("abc")

    ‘cba’

    递归算法很简单,也很容易应用, 但是,能第一时间想到的确很少, 算法在理解的基础上,很容易记忆, 代码量很少, 却能解决复杂的问题, 比如汉诺塔, 如果笔算的话, 很难, 单用递归, 很容易解决。递归就是把大问题, 分解成无数的小问题, 小问题的结果提供给大问题, 再解决整个问题。 4. N 皇后问题

    Processed: 0.009, SQL: 8