C'è un altro errore...non c'è la condizione di uscita dalla ricorsione nel caso in cui uno dei confronti tra le lettere sia sbagliato, la versione giusta dovrebbe essere questa:
codice:
bool is_palindrome(string s)
{
     if(s.length()<=1)
     {
      return true;
     }
     else
     {
      static int start=0;
      static int end=s.length()-1;
      cout << start <<"  "<<end <<endl;
      if(s[start]!=s[end])return false;
      else
      {
        while(start<end){
        start++;
        end--;
        if(is_palindrome(s)==false)return false;
        }
      }
     }
}
Ariciao