嘿,夥計們,下面是我用於學校作業的一段代碼。 每當我輸入一個單詞,並在其中(它是一個大寫字母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