Warum erzeugt dieser Code nicht die richtige Ausgabe? [geschlossen

Wenn Sie eine Zeichenfolge und eine Zahl eingeben, erzeugt diese Funktion alle möglichen Kombinationen von n Buchstaben aus dieser Zeichenfolge.

d.h. Wenn ich "abcd" und 3 übergebe, sollte ich die folgende Ausgabe erhalten:

abc
abd
acd
bcd

Dies ist der Code

- (void)viewDidLoad {
    [super viewDidLoad];
    [self expand_combinations:@"abcd" arg2:@"" arg3:3];
}

-(void) expand_combinations: (NSString *) remaining_string arg2:(NSString *)s arg3:(int) remain_depth
{
    if(remain_depth==0)
    {
        printf("%s\n",[s UTF8String]);
        return;
    }

    for(int k=0; k < [remaining_string length]; ++k)
    {
        s = [s stringByAppendingString:[[remaining_string substringFromIndex:k] substringToIndex:1]];
        [self expand_combinations:[remaining_string substringFromIndex:k+1] arg2:s arg3:remain_depth - 1];
    }
    return;
}

Instead das ist, was es druckt

abc
abcd
abcd
abcd

Antworten auf die Frage(4)

Ihre Antwort auf die Frage