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);
}

 

相关文章:

  • 2022-02-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-22
  • 2022-01-15
  • 2021-04-28
  • 2021-08-04
猜你喜欢
  • 2021-12-19
  • 2021-06-01
  • 2021-09-08
  • 2022-02-09
  • 2021-09-22
  • 2021-09-05
  • 2022-02-09
相关资源
相似解决方案