原始碼兩處語法錯誤:
main() 缺少回傳型別,應為 int main() (C++ 強制)。string s = 'abcd'; 單引號為**字元字面值**,字串需用雙引號 "abcd"。#include <iostream>
#include <string>
using namespace std;
string f(string s) {
if (s.length() == 1) return s;
return f(s.substr(1)) + s.substr(0, 1);
}
int main() {
string s = "abcd";
cout << f(s) << endl; // 輸出 dcba
return 0;
}
f("abcd") → f("bcd") + "a"f("bcd") → f("cd") + "b"f("cd") → f("d") + "c"f("d") → "d"修正語法後即可正常編譯執行,遞歸邏輯本身正確。