递归

recursion完成了iteration,但逻辑清晰,有以下问题:

  • recursion 由stack完成,会溢出
  • solution: compute argument then input to recursion func

like this, 输入recursion的参数已经计算

return fact_iter(num - 1, num * product)
===> fact_iter(5, 1)
===> fact_iter(4, 5)
===> fact_iter(3, 20)
===> fact_iter(2, 60)
===> fact_iter(1, 120)
===> 120
  • 那现在总体应该写成:
def fact(n): 
    return fact_iter(n, 1)
#
def fact_iter(num, product): 
    if num == 1: 
       return product 
    return fact_iter(num - 1, num * product)

经典汉诺塔

  1. n-1右移到b
  2. 移动第n 回移前n-1
  3. 交换参数位置 变换移动like abc---> acb 带一个bac
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 递归函数: 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。(说白了就是函数名...
    黄大臻Dzreal阅读 278评论 0 0
  • http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958...
    喵在野阅读 475评论 0 4
  • 函数### 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:...
    MJXH阅读 1,117评论 0 0
  • 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n!...
    小呀小芒果阅读 4,050评论 0 0
  • 传统递归 fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! ...
    五秋木阅读 250评论 0 0