یک اسکریپت پایتون بنویسید که تابع بازگشتی برای محاسبه ضریب دو جمله‌ای (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 یا یک فایل را در نظر بگیرید.

توسط پژوهشگر در 199 روز قبل ساعت 23:55
دسته بندی ها: Python Python for beginner
sara در 199 روز قبل ساعت 23:55

استفاده از @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+) یا روش‌های پیمایشی/دینامیک برنامه‌نویسی استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری