0001 uint32_t lcsR(const char* A, int n, const char* B, int m) { 0002 if (n < 1 || m < 1) return 0; //递归基 0003 if (A[n-1] == B[m-1]) //尾字符相同,则减治 0004 return lcsR(A, n-1, B, m-1) + 1; 0005 else //否则,分治 0006 return max(lcsR(A, n-1, B, m), lcsR(A, n, B, m-1)); 0007 } //每经一次比对,至少有一个序列会缩短一个单位,故知算法必能终止