分治的手段 - 递归

分治的手段 - 递归

要素

  • 参数与基于参数的函数 (方法) 边界

形式

  • 单递归
fun(n)
    if n = 0:
        return
    fun(n-1)

形式如上

时间复杂度, O (n), 容易想到, 时间复杂良好.

  • 多递归
fun(n)
    if n = 0:
        return
    fun(n-1)
    fun(n-2)
    fun(n-3)
    ...

形式如上

时间复杂度, O (nn), 容易想到, 时间复杂坏.

剪枝优化

fun(arr,l,r,q)
    if l<r:
        return
    m=l+r/2
    if(q=m): // 剪枝
        return
    else if(q<m): // 剪枝
        fun(arr,l,m-1,q)
    else: // 剪枝
        fun(arr,m+1,r,q)

时间复杂度, O (nn), 不易想到, 时间复杂最好, 但是对数据有一定的条件.

以上就是我分治重要手段递归的一些认识, 如有不周, 请指正.

posted @ 2019-03-15 08:45  son9wx  阅读(116)  评论(0编辑  收藏  举报