โดยเริ่มจากเลข 1 และเพิ่ม 5 หรือคูณด้วย 3 ซ้ำๆ กัน ก็จะสามารถผลิตตัวเลขใหม่ได้ไม่จำกัด เราจำเป็นต้องเขียนฟังก์ชันที่พยายามหาลำดับของการบวกและการคูณที่สร้างตัวเลขนั้น และส่งคืนค่าบูลีนโดยพิจารณาจากข้อเท็จจริงว่ามีลำดับดังกล่าวอยู่หรือไม่
ตัวอย่างเช่น
สามารถไปถึงหมายเลข 13 ได้โดยการคูณด้วย 3 ก่อนแล้วจึงบวก 5 สองครั้ง ดังนั้นฟังก์ชันควรคืนค่าเป็นจริงสำหรับ 13 ในขณะที่ไม่สามารถหาหมายเลข 15 ได้เลย ดังนั้นฟังก์ชันควรคืนค่าเท็จสำหรับ 15
แนวทาง
เราจะใช้วิธีการแบบเรียกซ้ำ ซึ่งเราจะลองความเป็นไปได้ทั้งหมดที่นำไปสู่โซลูชันที่ต้องการซ้ำแล้วซ้ำเล่า รหัสสำหรับวิธีนี้จะเป็น -
ตัวอย่าง
const sequenceExists = (num, curr = 1) => { if(curr > num){ return false; }; if(curr === num){ return true; }; return sequenceExists(num, curr+5) || sequenceExists(num, curr*3); }; console.log(sequenceExists(18)); console.log(sequenceExists(15)); console.log(sequenceExists(32)); console.log(sequenceExists(167)); console.log(sequenceExists(17)); console.log(sequenceExists(1119));
ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
true false true true false true