《数据结构:邓俊辉版》——递归

1、递归求和

int sum(int szArray[], int nIndex, int nLen)
{
    if (nIndex == nLen - 1)
    {
        return szArray[nIndex];
    }
    return szArray[nIndex] + sum(szArray, nIndex + 1, nLen);
}

int sum2(int szArray[], int n)
{
    if (n == 0)
    {
        return 0 ;
    }
    return szArray[n - 1] + sum2(szArray, n - 1);
}

2、递归求幂指数

int power2(int n)
{
    if (0 == n)
        return 1;
    return 2 * power2(n - 1);
}

优化:时间复杂度降低

int sqr(int a)
{
    return a * a;
}

int opt_power2(int n)
{
    if (0 == n)
        return 1;
    return (n % 2 == 1) ? 2 * sqr(opt_power2(n / 2)) : sqr(opt_power2(n / 2));
}

3、分治递归

int DC_Sum(int szArray[], int start, int end)
{
    if (start >= end)
        return szArray[start];
    int mid = (start + end) / 2;
    return DC_Sum(szArray, start, mid) + DC_Sum(szArray, mid + 1, end);
}

 

posted @ 2019-10-30 05:59  _No.47  阅读(334)  评论(0编辑  收藏  举报