ในปัญหานี้ เราได้รับตัวเลขสองตัว 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