递归函数以反转字符串C ++

问题描述 投票:1回答:2

我以前发现此代码是在进行字符串反转时递归的,但是我不明白该代码的工作方式,我能否得到一些解释?谢谢!

std::string reverse(std::string str) {
    if(str.length()==0)
        return "";  
    return reverse(str.substr(1)) + str[0];
}
c++ recursion reverse
2个回答
2
投票

我怀疑您可以在下图中找到说明。

enter image description here


1
投票

想象您有字符串“ abcdab”。

  1. 您要求的str.length()等于6。
  2. 您从索引1中获取了它的子字符串,所以它是“ bcdab”
  3. 您采用第一个符号,并用子字符串将其反转。现在您有了“ bcdaba”
  4. 重复1,所以您将得到“ cdabab”,然后是“ dababc”,依此类推
© www.soinside.com 2019 - 2024. All rights reserved.