以下代码完美运行并显示正确的输出:
- (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;
}
NSString *str = [[NSString alloc] initWithString:s];
for(int k=0; k < [remaining_string length]; ++k)
{
str = [s stringByAppendingString:[[remaining_string substringFromIndex:k] substringToIndex:1]];
[self expand_combinations:[remaining_string substringFromIndex:k+1] arg2:str arg3:remain_depth - 1];
}
return;
}
但是,我想将它们返回给NSArray,而不是输出结果。如何更改此代码呢?我需要使用此函数在程序的其他部分生成的信息。
答案 0 :(得分:3)
您需要在代码中更改一些内容。
-expand_combinations:arg2:arg3
更清晰,更有意义的内容。str
初始化s
,因为您在循环中立即更改其值而不释放旧值。NSMutableArray
。在方法的开头,创建一个带有[NSMutableArray array]
的数组,并在每行printf
处,将字符串添加到数组中。然后归还。答案 1 :(得分:2)
基本上你有:
在viewDidLoad
之前[self expand_combinations ...
创建可变数组
将附加参数(可变数组)添加到expand_combinations
填充expand_combinations