یک اسکریپت پایتون بنویسید که با استفاده از functools.lru_cache یک تابع بازگشتی برای محاسبهٔ عدد nام فیبوناچی را بهطور مؤثر پیادهسازی کند و زمان اجرای آن را در مقایسه با نسخهٔ بدون حافظهگذاری برای چند مقدار مختلف n ثبت و گزارش کند.
1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:10 0.0
از دکوراتور functools.lru_cache برای کش کردن نتایج فراخوانیهای تابع بازگشتی استفاده کنید تا از محاسبات تکراری جلوگیری شود؛ از ماژول time یا timeit برای اندازهگیری زمان اجرا بهره ببرید و برای مقایسه یک نسخهٔ سادهٔ بازگشتی بدون کش هم پیادهسازی کنید. نکات: میتوانید maxsize را برابر None یا عددی مشخص قرار دهید، در صورت نیاز cache_clear() را نشان دهید، مراقب محدودیت عمق بازگشت (recursion depth) باشید و برای nهای خیلی بزرگ به جای بازگشتی روشهای تکراری یا الگوریتمهای سریعتر (مثل نمایی ماتریسی) را ذکر کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی فیبوناچی با کارایی خوب از functools.lru_cache روی تابع بازگشتی استفاده کنید تا محاسبات تکراری کاهش یابد. با افزایش n ممکن است به محدودیت عمق بازگشت برخورد کنید، در این صورت یا باید به تنظیم recursionlimit یا الگوریتمهای غیر بازگشتی مانند روشهای ماتریسی فکر کنید. برای مقایسه دقیق زمانها از time.perf_counter یا timeit استفاده کرده و هر مقدار n را چند بار اجرا کنید و میانگین بگیرید، و روشن کنید maxsize یا None بودن کش را آزمایش کنید. همچنین هنگام مقایسه، از cache_clear() استفاده کنید تا تفاوت با زمان اجرای نسخه بدون کش را روشن کنید.
گزارش