یک اسکریپت پایتون بنویسید که تابع بازگشتی برای محاسبه ضریب دو جملهای (n choose k) را با استفاده از functools.lru_cache پیادهسازی کند و سپس برای یک لیست از جفتهای (n, k) مقادیر را چاپ کند.
11.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 23:55 0.0
با استفاده از functools.lru_cache میتوانید نتایج میانی تابع بازگشتی C(n,k)=C(n-1,k-1)+C(n-1,k) را ذخیره کرده و از محاسبات تکراری جلوگیری کنید: تابع را با @lru_cache(maxsize=None) تزئین کنید، پایهها را (k==0 یا k==n بازگشت 1، و اگر k>n بازگشت 0) تعریف کنید و سپس لیستی از جفتهای (n,k) را حلقه بزنید تا خروجیها را چاپ کنید. نکات: آرگومانهای تابع باید قابل هش باشند (اعداد صحیح اوکیاند)، برای پاکسازی کش از cache_clear() استفاده کنید و برای ورودیهای متعدد یا اسکریپتهای اتوماتیک خواندن از stdin یا یک فایل را در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از @functools.lru_cache برای تزئین تابع بازگشتی C(n,k)=C(n-1,k-1)+C(n-1,k) باعث ذخیرهسازی نتایج میانی و حذف محاسبات تکراری میشود؛ پایهها را (k==0 یا k==n بازگشت 1 و k>n بازگشت 0) تعریف کنید و مطمئن شوید آرگومانها اعداد صحیح هستند چون باید قابل هش باشند. برای کارایی بیشتر از تقارن بُنومی C(n,k)=C(n,n-k) استفاده کنید تا عمق بازگشت کاهش یابد و در صورت نیاز کش را با cache_clear() پاک کنید. برای nهای خیلی بزرگ یا اجراهای سنگین بهتر است از math.comb (در پایتون 3.8+) یا روشهای پیمایشی/دینامیک برنامهنویسی استفاده کنید.
گزارش