ฉันคิดว่า Collatz Conjecture เป็นที่รู้จักกันดีอยู่แล้ว แต่ถ้าเรากลับกฎ
เริ่มต้นด้วยจำนวนเต็ม n> = 1
ทำซ้ำขั้นตอนต่อไปนี้:
ถ้า n เป็นเลขคู่ให้คูณด้วย 3 แล้วบวก 1
ถ้า n เป็นเลขคี่ให้ลบ 1 แล้วหารด้วย 2
หยุดเมื่อถึง 0
พิมพ์ตัวเลขซ้ำ
กรณีทดสอบ:
1 => 1, 0
2 => 2, 7, 3, 1, 0
3 => 3, 1, 0
10 => 10, 31, 15, 7, 3...
14 => 14, 43, 21, 10, ...
กฎ:
ลำดับนี้ไม่ทำงานสำหรับตัวเลขจำนวนมากเพราะมันเข้าสู่วงวนไม่สิ้นสุด คุณไม่จำเป็นต้องจัดการกับกรณีเหล่านั้น การพิมพ์เฉพาะกรณีทดสอบด้านบนก็เพียงพอแล้ว
ฉันแนะนำให้ลบ 1 แล้วหารด้วยสองเพื่อให้จำนวนเต็มที่ถูกต้องเพื่อดำเนินการต่อ แต่ไม่จำเป็นต้องคำนวณด้วยวิธีนั้น คุณอาจหารด้วย 2 แล้วแปลงเป็นจำนวนเต็มหรือวิธีอื่น ๆ
คุณต้องพิมพ์อินพุตเริ่มต้นเช่นกัน
ไม่จำเป็นต้องฟอร์แมตเอาต์พุตเป็นกรณีทดสอบ มันเป็นเพียงข้อเสนอแนะ อย่างไรก็ตามคำสั่งซ้ำจะต้องได้รับการเคารพ
รหัสที่เล็กที่สุดชนะ
0
ตอนท้ายหรือไม่?