赋值是为了证明在递归函数的最坏情况下时间复杂度是0(n,m)。
假设如下:
n=w1 len(单词w1的长度),
m=w2len(单词w2的长度)
这是密码
int dist(String w1, String w2, int w1len, int w2len) {
if (w1len == 0) {
return w2len;
}
if (w2len == 0) {
return w1len;
}
int res = dist(w1, w2, w1len - 1, w2len - 1) + (w1.charAt(w1len - 1) == w2.charAt(w2len - 1) ? 0 : 1);
int addLetter = dist(w1, w2, w1len - 1, w2len) + 1;
if (addLetter < res)
res = addLetter;
int deleteLetter = dist(w1, w2, w1len, w2len - 1) + 1;
if (deleteLetter < res)
res = deleteLetter;
return res;
}
最佳答案
尝试为函数绘制调用树。
它看起来像什么?
您能估计dist函数的调用次数吗?