嘿,伙计们,下面是我用于学校作业的一段代码。 每当我输入一个单词,并在其中(它是一个大写字母o),它就会失败! 当程序中有一个或多个大写字母O时,它会返回false并记录:句子不是回文。奇怪的可可错误?
对于不知道回文是什么的人来说,一个回文是一个从右向左读的词。 (例如哈哈,皮划艇,reviver等) 当我试图检查有史以来发现的'最古老的'回文时发现了这个错误:SATOR AREPO TENET OPERA ROTAS。
当我将所有的大写字母o改为小写字母o时,它会起作用,并返回true。 让我清楚地说明,用这段代码所有句子/单词大写O的返回都是错误的。单个资本o就足以使这个计划失败。
-(BOOL)testForPalindrome:(NSString *)s position:(NSInteger)pos {
NSString *string = s;
NSInteger position = pos;
NSInteger stringLength = [string length];
NSString *charOne = [string substringFromIndex:position];
charOne = [charOne substringToIndex:1];
NSString *charTwo = [string substringFromIndex:(stringLength - 1 - position)];
charTwo = [charTwo substringToIndex:1];
if(position > (stringLength/2)) {
NSString *printableString = [NSString stringWithFormat:@"De following word or sentence is a palindrome: \n\n%@", string];
NSLog(@"%@ is a palindrome.", string);
[textField setStringValue:printableString];
return YES;
}
if(charOne != charTwo) {
NSLog(@"%@, %@", charOne, charTwo);
NSLog(@"%i", position);
NSLog(@"%@ is not a palindrome.", string);
return NO;
}
return [self testForPalindrome:string position:position+1];
}
那么,这是可可中的一些奇怪的错误? 或者我错过了什么?
- 乙
您是否尝试过通过调试器步进?你可以发布一个例子的输出吗? – mkb 2010-09-27 13:44:21
只是想知道(所以我可以自己测试这个),'position'代表什么? – Joshua 2010-09-27 17:47:26
当第一次调用函数的位置应为0时,函数在每次增加位置的同时执行一些递归。 – 2010-09-28 07:38:10