有人可以解释以下代码的时间和空间复杂性并向我展示数学吗?
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!)?