数据结构--绪论
数组求和的迭代和递归求法 迭代版本 int SUMI(int A[], int n) { int sum = 0; //O(1) for (int i = 0;i < n;i++) { //n sum += A[i]; // O(1) } return sum; // O(1) } 递归版本 int SUM2(int A[], int n) { //线性递归,采取递归跟踪的策略 return //也可以采取递归方程 (n < 1) ? 0 : SUM2(int A[], int n - 1) + A[n - 1]; } //T( ) = O(1) * (N+1) = O(n) 数组倒置递归版本 void reverse(int* A, int lo, int hi) { //数组倒置递归版本 if (lo < hi) { swap(A[lo], A[hi]); return reverse( A, int lo + 1, int hi - 1); } else return; // 这个就是递归基啊,lo >= hi 都不行的。 } 分而治之版数组求和 int SUM(int A[], int lo, int hi) { //分治版数组求和 if (lo == hi)return A[lo]; int mid = (lo + hi) >> 1; return SUM(A, lo,