ในปัญหานี้ เราได้รับสองตัวเลข N และ K งานคือสร้างโปรแกรมที่จะพิมพ์ชุดตัวเลขโดยไม่ใช้ลูปใดๆ
ชุดตัวเลขที่จะพิมพ์จะเริ่มจาก n และลบ k จนกลายเป็นศูนย์หรือติดลบ หลังจากนั้น เราจะเริ่มบวก k เข้าไปจนกลายเป็น n อีกครั้ง ในกระบวนการนี้ เราไม่สามารถใช้ลูปประเภทใดๆ ได้
ตัวอย่างเพื่อเข้าใจปัญหา
อินพุต
n = 12, k = 3
เอาต์พุต
12 9 6 3 0 3 6 9 12
เพื่อแก้ปัญหานี้โดยไม่ใช้ลูป เราจะใช้การเรียกซ้ำ (recursion) เราจะสร้างฟังก์ชันเรียกซ้ำที่จะเรียกตัวเองซ้ำและเก็บเงื่อนไขตรวจสอบค่าของตัวเลข เพื่อให้แน่ใจว่าต้องทำการบวกหรือลบกับตัวเลข
ฟังก์ชันจะใช้ flag ช่วยให้เราติดตามว่าค่าควรถูกลบหรือบวก
โปรแกรม C พิมพ์ชุดตัวเลขโดยไม่ใช้ลูป
// โปรแกรม C พิมพ์ชุดตัวเลขโดยไม่ใช้ลูปใดๆ
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
void PrintSeriesRec(int current, int N, int K, bool flag) {
cout << current << "\t";
if (current <= 0)
flag = !flag;
if (current == N && !flag)
return;
if (flag == true)
PrintSeriesRec(current - K, N, K, flag);
else if (!flag)
PrintSeriesRec(current + K, N, K, flag);
}
int main() {
int N = 12, K = 4;
cout << "ชุดตัวเลขคือ: \n";
PrintSeriesRec(N, N, K, true);
return 0;
}
ผลลัพธ์
ชุดตัวเลขคือ —
12 8 4 0 4 8 12