โจทย์
ดูต้นฉบับ (ภาษาอังกฤษ)เริ่มต้นด้วย n หาก n เป็นเลขคู่ ให้นำ n หารด้วย 2 หาก n เป็นเลขคี่ ให้นำ n คูณ 3 แล้วบวก 1 ทำซ้ำขั้นตอนนี้ไปเรื่อย ๆ จนกว่าค่าจะเป็น 1 ให้รวมทั้งค่าตั้งต้นและ 1 สุดท้ายไว้ในคำตอบด้วย
ให้เขียนฟังก์ชัน collatz_sequence(n)
อินพุต
n: จำนวนเต็มบวกที่ใช้เริ่มต้น
เอาต์พุต
คืนค่าลำดับทั้งหมดตามลำดับที่เกิดขึ้น
เงื่อนไข
1 ≤ n ≤ 10,000 อินพุตในช่วงนี้จะถึง 1 ตามกฎนี้เสมอ และค่าทุกตัวในลำดับจะอยู่ในช่วงของ signed 64-bit integer
ตัวอย่าง
อินพุต:
n = 6
ผลลัพธ์ที่คาดหวัง:
expected = [6, 3, 10, 5, 16, 8, 4, 2, 1]
อินพุต:
long long n = 6;
ผลลัพธ์ที่คาดหวัง:
std::vector<long long> expected = {6, 3, 10, 5, 16, 8, 4, 2, 1};
อินพุต:
long n = 6;
ผลลัพธ์ที่คาดหวัง:
long[] expected = new long[] {6, 3, 10, 5, 16, 8, 4, 2, 1};
คำอธิบาย
6 เป็นเลขคู่ จึงกลายเป็น 3 จากนั้น 3 กลายเป็น 10 ทำตามกฎนี้ต่อไปเรื่อย ๆ จนถึง 1
อินพุต:
n = 1
ผลลัพธ์ที่คาดหวัง:
expected = [1]
อินพุต:
long long n = 1;
ผลลัพธ์ที่คาดหวัง:
std::vector<long long> expected = {1};
อินพุต:
long n = 1;
ผลลัพธ์ที่คาดหวัง:
long[] expected = new long[] {1};
คำอธิบาย
ค่าตั้งต้นคือ 1 อยู่แล้ว จึงไม่ต้องแปลงค่าใด ๆ
แหล่งอ้างอิง
โจทย์นี้ปรับให้เหมาะกับ CodeUtility กรุณาทำตามคำชี้แจงและข้อจำกัดด้านบน