Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ลำดับ Colatz ใน Python


สมมติว่าเรามีจำนวนเต็มบวก n เราต้องหาความยาวของลำดับ Collatz เนื่องจาก weknow ลำดับ Collatz ถูกสร้างขึ้นตามลำดับโดยที่ n =n/2 เมื่อ n เป็นอย่างอื่น n =3n+ 1 และลำดับนี้จะสิ้นสุดลงเมื่อ n =1

ดังนั้น หากอินพุตเป็น n =13 เอาต์พุตจะเป็น 10 เป็น [13, 40, 20, 10, 5, 16, 8, 4, 2, 1] ตามลำดับ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า num เท่ากับ 0 แล้ว
    • คืน 0
  • ความยาว :=1
  • ในขณะที่ num ไม่เหมือนกับ 1 ให้ทำ
    • num :=(num / 2) เมื่อ num mod 2 เป็น 0 มิฉะนั้น (3 * num + 1)
    • ยาว :=ยาว + 1
  • ความยาวคืน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, num):
      if num == 0:
         return 0
      length = 1
      while num != 1:
         num = (num / 2) if num % 2 == 0 else (3 * num + 1)
         length += 1
      return length
ob = Solution()
print(ob.solve(13))

อินพุต

13

ผลลัพธ์

10