c语言递回瓶颈 树 排列

void swap( char *a, char *b ){
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}

void permutation( char *c, int d, int e ){
int f;

if( d == e )
    printf( "%s\n", c );
else{
    for( f = d; f <= e; f++ ){
        swap( ( c + d ), ( c + f ) );
        permutation( c, d + 1, e );
        swap( ( c + d ), ( c + f ) );
    }
}

}

int main(){
char wordInput[25];
int len, arrLen, f;

printf( "\nEnter text: " );
gets( wordInput );
len = strlen( wordInput );
arrLen = len - 1;

permutation( wordInput, 0, arrLen );

return 0;

}

为何终止条件为f==d呢

我试过在要进入吓一下递回前(即permutation( c, d + 1, e );前)

print他出来发现确实有点像一棵树

请问如何思考递回该把它画成一棵树吗?

你为什么说终止条件为f == d?程序中是f = d,是赋,不是比较。

上面的答案有帮助吗?如果还有问题,请提出来,如果对答案满意,请顶一下,并标记为采纳答案,谢谢!