我有一个递归函数,旨在解析树并将树节点的所有值存储在NSString中.
下面的算法是否正确?
NSString* finalString = [self parseTree:rootNode string:@""];
-(NSString*)parseTree:(Node*)currentNode string:(NSMutableString*)myString
{
[myString appendText:currentNode.value];
for(int i=0;i<[currentNode.children length];i++){
return [self parseTree:[currentNode.children] objectAtIndex:i] string:myString];
}
}
Run Code Online (Sandbox Code Playgroud)
不它不是.
@""作为起始字符串传入.但是,@""不是NSMutableString.这肯定会在运行时产生异常.return,那么该方法停止,你不再执行.这意味着你经历了循环的第一次迭代,你将停止.永远.appendText:.你可能意味着appendString:这是另一个问题:为什么你需要返回一个值?你正在传递NSMutableString并修改它,那么为什么不总是在适当的位置修改它而不打扰返回值呢?例如:
- (void) parseTree:(Node*)currentNode string:(NSMutableString*)myString {
[myString appendString:currentNode.value];
for(Node * child in [currentNode children]){
[self parseTree:child string:myString];
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令调用:
NSMutableString * finalString = [NSMutableString string];
[self parseTree:aNode string:finalString];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
940 次 |
| 最近记录: |