Java 分词和排列的时间复杂度差异

Java 分词和排列的时间复杂度差异,java,string,performance,dynamic,combinations,Java,String,Performance,Dynamic,Combinations,上述文章中的解释是有道理的。但是为什么这不能是T(n)=nT(n-1)+1呢?结果是n!。我做错了什么 这与置换递归有何不同,不同之处在于,在置换中,假设我们有一个a,b,c,d序列,对于第一步,我们可以选择所有的序列,这使得我们的第一步具有n的可能性。在那之后,对于第二步,我们仍然有n-1的可能性来完成每一步。所以我们有n*(n-1)… 而在分词中,就像链接中的sad一样,我们有一系列abcd和一个单词列表a,b,c,d,ab,ac,ad,bc,bd,cd,。对于第一步,我们仍然有n选择:a,

上述文章中的解释是有道理的。但是为什么这不能是T(n)=nT(n-1)+1呢?结果是n!。我做错了什么


这与置换递归有何不同,不同之处在于,在置换中,假设我们有一个a,b,c,d序列,对于第一步,我们可以选择所有的序列,这使得我们的第一步具有
n
的可能性。在那之后,对于第二步,我们仍然有
n-1
的可能性来完成每一步。所以我们有
n*(n-1)…

而在
分词
中,就像链接中的sad一样,我们有一系列
abcd
和一个单词列表
a,b,c,d,ab,ac,ad,bc,bd,cd,
。对于第一步,我们仍然有
n
选择:
a,ab,abc,abc
。但是在那之后,我们没有为每个第一步选择
n-1
。例如,如果我们选择
abcd
作为第一步,那么我们就没有第二步了