我必须使用一个递归函数,给定一个字符串,说明它是否是回文。
我对这个练习没有任何问题,但我真的不明白为什么这段代码会按要求做。特别是不知道为什么strlen(char*)函数不会抛出异常(我知道这是一个OOP概念,但我不知道如何解释自己)像IndexOutOfRange
这是代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
bool IsPalindrome(char str[],int index){
if (index>0){
if (str[index]==str[strlen(str)-1-index])
return IsPalindrome(str,index-1);
else
return false;
}
else{
if (str[index]==str[strlen(str)-1])
return true;
else
return false;
}
}
int main()
{
char A[100];
gets(A);
if (IsPalindrome(A,strlen(A)))
printf("palindrome");
else
printf("not palindrome");
getch();
return 0;
}
为什么我不必输入:
if (IsPalindrome(A,strlen(A)-1))
它仍然有效吗?
我在用着!Orwell 的 Dev-C++ 和 TDMGCC 编译器 64 位