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