Форум программистов, компьютерный форум CyberForum.ru

Рекурсивная функция определения палиндрома строки. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.11.2011, 03:43     Рекурсивная функция определения палиндрома строки. #1
Написал по заданию из книги Дейтелов.
C++
1
2
3
4
5
6
7
8
9
10
bool testPalindrome( const char arr[], const size_t &x, const size_t &y = NULL )
{
    if ( x == y || ( x + 1 == y && arr[ x ] == arr[ y ] ))
        return true;
    
    if ( arr[ x ] == arr[ y ] )
        testPalindrome( arr, x - 1, y + 1 );
    else
        return false;
}
Вроде все работает нормально, но мне кажется как то неуклюже все это выглядит. Поправьте пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2011, 03:43     Рекурсивная функция определения палиндрома строки.
Посмотрите здесь:

C++ Рекурсивная функция вычисления длины строки
Рекурсивная функция, не возвращающая значения, которая удаляет из заданной строки все точки C++
Рекурсивная функция, не возвращающая значения, которая удаляет из заданной строки все точки C++
C++ Рекурсивная функция
Рекурсивная функция C++
C++ Функция определения длины строки
C++ Рекурсивная функция для определения палиндромов
C++ Рекурсивная функция: все возможные перестановки символов строки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
03.11.2011, 06:29     Рекурсивная функция определения палиндрома строки. #2
В строке 7 у тебя не происходит возврат из функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cstdlib>
#include <cstring>
 
bool is_palindrome(const char* str, const size_t sz)
{
    if(sz == 1 || sz == 0 || (str[0] == str[sz - 1] && is_palindrome(str + 1, sz - 2)))
    return true;
 
    return false;
}
 
int main(int argc, char* argv[])
{
    for(int i = 1; i < argc; ++i)
    std::cout << '`' << argv[i] << "' is a palindrome? " << std::boolalpha
          << is_palindrome(argv[i], strlen(argv[i])) << std::endl;
    
    return 0;
}
Код
[nameless@desktop cpp]$ ./sample anna john "able was i ere i saw elba"
`anna' is a palindrome? true
`john' is a palindrome? false
`able was i ere i saw elba' is a palindrome? true
[nameless@desktop cpp]$
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
03.11.2011, 07:39  [ТС]     Рекурсивная функция определения палиндрома строки. #3
Ясно, спасибо, значит не до конца еще понял тему рекурсии, буду продолжать.
Yandex
Объявления
03.11.2011, 07:39     Рекурсивная функция определения палиндрома строки.
Ответ Создать тему
Опции темы

Текущее время: 00:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru