以下代码的时间复杂度是多少? (JavaScript的)

时间:2017-02-14 00:05:43

标签: javascript algorithm time-complexity big-o anagram

有人可以解释以下代码的时间和空间复杂性并向我展示数学吗?

let genAnagrams = (word, anagram = '', results = []) => {
  if (!word) {
    results.push(anagram);
    return;
  }
  for (let i = 0; i < word.length; i++) {
    genAnagrams(word.slice(0, i) + word.slice(i + 1), anagram + word[i], results);
  }
  return [...new Set(results)];
};

我知道切片在每次迭代时都会增加线性时间复杂度,那么这会是二次的吗? 这会是O(n!*(n-1)!)?还是O(n!)?或者O(n * n!)?

0 个答案:

没有答案