我試圖創建一個完全顛倒的字符串不使用reverse()函數或循環功能(即「你好」變成「2009東海生日賀」),但我得到一個分段故障,我編寫了下列代碼:倒車使用遞歸的字符串不<algorithm>或環
void reverseString(string &s) {
int strIndex = 0;
int strSize = (s.size() - 1);
if (s.size() <= 1) {
return;
}
else {
if (strIndex < (s.size()/2)) {
int temp = s.at(strIndex);
s.at(strIndex) = s.at(strSize);
s.at(strSize) = temp;
strIndex = strIndex + 1;
strSize = strSize - 1;
reverseString(s);
}
}
}
注意:我不允許更改函數的參數。
使用調試器。設置一個斷點,然後遍歷代碼,並觀察變量。 – abelenky
'strIndex'是'0'when你輸入的功能,所以'else'分支總是做同樣的事情,所以你停留在一個無限循環,從而導致堆棧溢出。進一步研究局部變量如何工作。 – molbdnilo
你需要傳遞strindex和了strsize到reverseString – pm100