ในปัญหานี้ เราได้รับตัวเลขสองตัว N และ K หน้าที่ของเราคือสร้างโปรแกรมที่จะพิมพ์ชุดตัวเลขโดยไม่ใช้การวนซ้ำ
ชุดที่จะพิมพ์จะเริ่มจาก n และจะถูกลบด้วย k จนกลายเป็นศูนย์หรือเป็นลบ หลังจากนั้นเราจะเริ่มเติม k ลงไปจนกลายเป็น n อีกครั้ง หากกระบวนการนี้เราไม่สามารถใช้ลูปประเภทใดก็ได้
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
n = 12 , k = 3
ผลลัพธ์
12 9 6 3 0 3 6 9 12
เพื่อแก้ปัญหานี้โดยไม่ต้องใช้ลูป เราจะใช้การเรียกซ้ำ เราจะสร้างฟังก์ชันแบบเรียกซ้ำซึ่งจะเรียกตัวเองอีกครั้งและคอยตรวจสอบค่าของตัวเลขเพื่อให้แน่ใจว่าการดำเนินการใดนอกเหนือจากการบวกหรือการลบจะเป็นหนึ่งในตัวเลข
ฟังก์ชันจะใช้แฟล็กที่จะช่วยให้เราติดตามว่าค่านั้นจะถูกลบหรือบวกหรือไม่
โปรแกรม 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<<"The series is : \n";
PrintSeriesRec(N, N, K, true);
return 0;
} ผลลัพธ์
ซีรีส์คือ −
12 8 4 0 4 8 12