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

หาพจน์ที่ n ของความสัมพันธ์แบบเวียนเกิด (Recurrence Relation) ใน Python

โจทย์: กำหนดลำดับ bₙ โดย b₁ = 1 และ bₙ₊₁ / bₙ = 2ⁿ หา log₂(bₙ) สำหรับ n ที่กำหนด

การแก้คณิตศาสตร์

bₙ₊₁/bₙ = 2ⁿ
bₙ/bₙ₋₁ = 2ⁿ⁻¹
...
b₂/b₁ = 2¹

คูณทุกสมการ: bₙ₊₁/b₁ = 2^(1+2+...+n) = 2^(n(n+1)/2)

∴ bₙ₊₁ = 2^(n(n+1)/2) (เนื่องจาก b₁ = 1)

แทน n → n-1: bₙ = 2^(n(n-1)/2)

log₂(bₙ) = n(n-1)/2

ตัวอย่างโค้ด

def add_upto_n(n):
    res = (n * (n - 1)) // 2
    return res

n = 6
print(int(add_upto_n(n)))  # 15

ผลลัพธ์

15

สรุป: โจทย์ลดรูปเป็นสูตรปิด (closed-form) n(n-1)/2 คำนวณได้ใน O(1) ไม่ต้องคำนวณลำดับจริง