#include <iostream>
#include <string>
void recursive_reverse(std::string &s) {
size_t pos = s.find_last_of(" ");
// base case - there's no space
if(pos == std::string::npos) {
std::cout << s << std::endl;
return;
} else {
std::string substring = s.substr(pos+1);
std::cout << substring << std::endl;
std::string rest = s.substr(0, pos);
// recursive call
recursive_reverse(rest);
}
}
int main() {
std::string s("Hello World!");
recursive_reverse(s);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdm9pZCByZWN1cnNpdmVfcmV2ZXJzZShzdGQ6OnN0cmluZyAmcykgewogIHNpemVfdCBwb3MgPSBzLmZpbmRfbGFzdF9vZigiICIpOwogIC8vIGJhc2UgY2FzZSAtIHRoZXJlJ3Mgbm8gc3BhY2UKICBpZihwb3MgPT0gc3RkOjpzdHJpbmc6Om5wb3MpIHsKICAgIHN0ZDo6Y291dCA8PCBzIDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybjsKICB9IGVsc2UgewogICAgc3RkOjpzdHJpbmcgc3Vic3RyaW5nID0gcy5zdWJzdHIocG9zKzEpOwogICAgc3RkOjpjb3V0IDw8IHN1YnN0cmluZyA8PCBzdGQ6OmVuZGw7CiAgICBzdGQ6OnN0cmluZyByZXN0ID0gcy5zdWJzdHIoMCwgcG9zKTsKICAgIC8vIHJlY3Vyc2l2ZSBjYWxsCiAgICByZWN1cnNpdmVfcmV2ZXJzZShyZXN0KTsKICB9Cn0KCmludCBtYWluKCkgewogIHN0ZDo6c3RyaW5nIHMoIkhlbGxvIFdvcmxkISIpOwogIHJlY3Vyc2l2ZV9yZXZlcnNlKHMpOwogIHJldHVybiAwOwp9Cg==