راستش فکر نمی کردم با اولین راه حلم برای سوال 25 پروژه اویلر، به جوابی بهینه برسم! البته مطمئنا راه حل های دیگه ای هم هست که سرعت بالاتری داشته باشه اما سرعت راه حل من که بسیار راضی کننده بود! سوال 25 این هست:
دنباله فیبوناچی با رابطه بازگشتی زیر تعریف می شود:
Fn = Fn−1 + Fn−2, where F1 = 1 and F2 = 1
از این رو 12 دنباله اول فیبوناچی برابر است با:
F1 = 1
F2 = 1
F3 = 2
F4 = 3
F5 = 5
F6 = 8
F7 = 13
F8 = 21
F9 = 34
F10 = 55
F11 = 89
F12 = 144
دنباله دوازدهم اولین عدد 3 رقمی فیبوناچی است. اندیس اولین عدد هزاررقمی در دنباله فیبوناچی را پیدا کنید.
این هم راه حل من که فکر نمی کنم نیازی به توضیح اضافه باشه:
fib = [1, 1]
i = 1
while len(str(fib[i])) < 1000:
fib.append(fib[i]+fib[i-1])
i += 1
print(i+1)