آموزش پایتون
✔️ محاسبه سریع فیبوناچی با روش ماتریسی! برای محاسبه دنباله فیبوناچی معمولاً از روش بازگشتی استفاده می‌کنیم: def fib(n): if n <= 1: return n return fib(n-1) + fib(n-2) اما یک روش حرفه‌ای با پیچیدگی O(log n) وجود دارد: def fib(n): def mat_pow(mat, power): result = [[1,0],[0,1]] while power > 0: if power % 2 == 1: result = mat_mult(result, mat) mat = mat_mult(mat, mat) power //= 2 return result def mat_mult(a, b): return [[a[0][0]*b[0][0] + a[0][1]*b[1][0], a[0][0]*b[0][1] + a[0][1]*b[1][1]], [a[1][0]*b[0][0] + a[1][1]*b[1][0], a[1][0]*b[0][1] + a[1][1]*b[1][1]]] if n == 0: return 0 mat = [[1,1],[1,0]] result = mat_pow(mat, n-1) return result[0][0] #پایتون | #الگوریتم | #بهینه_سازی | @learnpythonicy
1 مشاهده12:32