Напишите рекурсивную функцию, которая переворачивает входную строку

Я читал книгу C ++ для всех и в одном из упражнений говорилось о написании функции string reverse (string str) , где возвращаемое значение - обратное of str .

Может ли кто-нибудь написать базовый код и объяснить его мне? Я' Я смотрю на этот вопрос со вчерашнего дня и не могу его понять. Самое большое, что я получил, это то, что функция возвращает первую букву str (что я до сих пор не знаю, как это произошло)

Это все, что я получил (через час после публикации этого вопрос):

string reverse(string str)
{
    string word = "";

    if (str.length() <= 1)
    {
        return str;
    }
    else
    {
        string str_copy = str;
        int n = str_copy.length() - 1;
        string last_letter = str_copy.substr(n, 1);

        str_copy = str_copy.substr(0, n);
        word += reverse(str_copy);
        return str_copy;
    }
    return word;
}

Если я ввожу "Волк", возвращается Wol. Кто-нибудь, помогите мне здесь Если я верну слово вместо , верну str_copy , тогда я получу w Это то, о чем уже задавали вопросы несколько человек. ( [UIScreen mainScreen] не сокращает его по причинам, уже неоднократно упоминавшимся ранее на этом форуме). Следовательно, логическим подходом было бы, чтобы контроллер представления содержимого читал фрейм окна делегата приложения. Единственный ответ, который я нашел, который приближается к этому, - использовать [[[UIApplication sharedApplication] окно] кадр] - однако это работает только после того, как свойство окна было сделано keyAndVisible. Контроллер представления содержимого должен прочитать свойство окна делегата приложения , прежде чем он получит makeKeyAndVisible. Код идет в следующем порядке ....

Делегат приложения:

- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {
// This next line is a test window frame for R&D purposes....
    [self setWindow: [[UIWindow alloc] initWithFrame: CGRectMake(0.0f, 20.0f, 320.0f, 320.0f)]];

    if ([self window]) {
        contentViewController = [[ContentViewControl alloc] initWithNibName: nil bundle: nil]; // Content view controller instantiated here

        if (contentViewController) {
            [[self window] addSubview: [contentViewController view]];
            [[self window] layoutSubviews];
            [[self window] makeKeyAndVisible];  // Window made key and visible here
            return YES;
        }
    }

    return NO;
}

В моем контроллере представления содержимого initWithNibName: nil bundle: nil метод у меня есть следующий тестовый код ... Итак, мой вопрос таков; Как называется экземпляр моего класса делегата приложения? Я знаю, что имя класса делегата приложения по умолчанию имеет значение myApplicationNameAppDelegate , но я ищу имя экземпляра . Я хочу заменить вызов [[UIApplication sharedApplication] keyWindow] на что-то вроде:

[myAppDelegatesInstanceName window].

Немного расширив это, как один метод доступа к другим целевым объектам, которые не являются потомками области видимости объекта, выполняющего запрос?

Как я уже сказал, я полный новичок во всем этом, и это, вероятно, еще один тупой вопрос для новичков, но на него, кажется, еще никто не ответил простым способом.

(С процедурной точки зрения - моя домашняя сфера - существует множество способов перенести содержимое окна на другие уровни области видимости, начиная от создания глобального доступа к окну для всего программного пакета и заканчивая передачей его в качестве конкретного параметра через различные иерархии функций - но этот объективный материал, кажется, отклоняется от установленной процедурной практики).

Если кто-нибудь может помочь, я был бы очень благодарен. Это определенно не интуитивно понятно! VV

11
задан codercat 9 January 2014 в 07:41
поделиться