0

文字列「This Is Demo」のすべての順列を単語ごとに出力しようとしています。たとえば、有効な順列は「This Demo Is」、「Demo Is This」、「Demo This is」です。私のプログラムはすべての順列を印刷していません。コードの何が問題になっていますか?

+(void)printPermutations
{
NSString *str = @"This Is Demo";
NSArray *arr = [str componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSMutableArray *permutationInput = [arr mutableCopy];
[[self class] printPermutationOfString:permutationInput startIndex:0 endIndex:arr.count-1];
}

+(void)printPermutationOfString:(NSMutableArray*)arr startIndex:(int)startingindex 
 endIndex:(int)endIndex
{
if (startingindex == endIndex) {
    NSLog(@"%@",arr);
    return;
}
for (int i = startingindex; i < endIndex; i++) {
    [arr exchangeObjectAtIndex:startingindex withObjectAtIndex:i];
    [[self class] printPermutationOfString:arr  startIndex:i+1 endIndex:endIndex];
    [arr exchangeObjectAtIndex:startingindex withObjectAtIndex:endIndex];
}

}
4

1 に答える 1