Рекурсивная функция для обращения строки C ++ - PullRequest
1 голос
/ 15 марта 2020

Ранее я нашел этот код при выполнении рекурсии обращения строки, но я не мог понять, как работает код, могу ли я получить какое-то объяснение? спасибо!

std::string reverse(std::string str) {
    if(str.length()==0)
        return "";  
    return reverse(str.substr(1)) + str[0];
}

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Вы можете найти объяснение на следующей диаграмме, я подозреваю.

enter image description here

1 голос
/ 15 марта 2020

Представьте, что у вас есть строка "abcdab".

  1. вы запрашиваете str.length (), равную 6.
  2. вы берете его подстроку из индекса 1, так что это "bcdab" "
  3. вы берете первый символ и заменяете его подстрокой. Теперь у вас есть «bcdaba»
  4. повтора 1, поэтому у вас будет «cdabab», затем «dabab c» и так далее
...