Reverse ของสตริงคือสตริงเดิมแต่เรียงกลับหลังมาหน้า ตัวอย่าง: "Apple is red" → "der si elppA"
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
void reverse(char *str) {
if(*str == '\0')
return;
else {
reverse(str+1);
cout << *str;
}
}
int main() {
char str[] = "C++ is fun";
cout << "Original String: " << str << endl;
cout << "Reversed String: ";
reverse(str);
return 0;
}
ผลลัพธ์
Original String: C++ is fun Reversed String: nuf si ++C
อธิบายการทำงาน
ฟังก์ชัน reverse() แบบ Recursive รับ pointer *str ชี้จุดเริ่มต้นสตริง:
if(*str == '\0')
return;
else {
reverse(str+1);
cout << *str;
}
- ถ้า *str เป็น \0 (จบสตริง) return กลับ
- มิฉะนั้น เรียก reverse(str+1) ไปตัวถัดไป
- เมื่อ unwind (กลับจาก recursion) จะพิมพ์ *str จากท้ายมาหน้า → ได้สตริงกลับ
main() กำหนดสตริง แสดงต้นฉบับ เรียก reverse() แสดงผลกลับ:
char str[] = "C++ is fun"; cout<<"Original String: "<<str<<endl; cout<<"Reversed String: "; reverse(str);