数据结构总结-递归杂想
CouriourC Lv4

数学方法思考递归和动规

递归方法目前【2022/11/1】的一个分类思考:

抽象递归

主要利用递归栈的功能,来做遍历,输出。

  • 实现 DFS(先序遍历) 遍历节点

  • 实现 汉诺塔

抽象递归十分重要的一点是要赋予每一个符号具体意义,如果只是利用遍历效果,可以理解为,从上到下输出的时候是顺序的,这个递归下面的是栈弹出的,然后划分左右的话,就可以理解为递归子问题的划分,
Recur(…)

Recur(…)

这种特点是不对值进行更改,只是通过传参进行变动,获得需要的输出效果,同时也不需要接收参数,适合多路效果,或者只是做统计,对于做统计可以利用下面的值递归的思想来做到统计

值递归

主要利用递归自带的 F(n) = F(n-1) 的迭代式效果

  • 求 高斯 :F(n) = 1 + F( n -1 )

  • 求 斐波 :F(n) = F(n-1) + F(n-2)

  • 求 阶乘 :F(n) = n*F(n-1)

其他相关的求具体值得公式,这种解决方法很简单,直接按照公式写就行了。

抽象与值的结合类型

这一部分就有数论的感觉了。

  • 反转链表
    • RES{ cur cur.next null } = RES { cur.next cur null }
  • 归并排序
    • RES{ l r } =merge( RES{l} , RES{r})

更新一下
记录一下,这个后面所提到的,可以从函数式编程思想中练习

 评论