تابع ترکیب (Combination)
در این تمرین، وظیفهی شما پیادهسازی تابعی به نام comb در پایتون است. این تابع باید دو ورودی دریافت کند:
n: عدد حسابی اولk: عدد حسابی دوم
و مقدار ترکیب C(n, k) (که به آن انتخاب k از n نیز گفته میشود) را بهعنوان خروجی برگرداند.
C(n, k)
=n! / (k! × (n-k)!)
تضمین میشود که ورودیها در
0≤k,n≤20صدق میکنند.
🎯 مثال
برای اینکه بهتر متوجه شوید که چه انتظاری از تابع comb میرود، مثالهای زیر را در نظر بگیرید. اگر تابع comb را با ورودیهای زیر صدا بزنید، باید خروجیهای نشاندادهشده را برگرداند:
>>> comb(5, 3)
10
>>> comb(10, 0)
1
>>> comb(10, 2)
45
>>> comb(5, 7)
0
⚠️ نکتهی مهم
در این تمرین نیازی به دریافت ورودی از کاربر یا چاپ خروجی در کنسول ندارید و باید خروجی را برگردانید (return کنید). تمرکز شما فقط بر پیادهسازی دقیق توابع و منطق موردنیاز طبق شرح تمرین است. سیستم داوری به طور خودکار تابع
combشما را با ورودیهای مختلف تست کرده و خروجی آن را بررسی میکند.
💡 راهنمایی
برای پیادهسازی تابع comb، میتوانید از روشهای زیر استفاده کنید:
روش ۱: استفاده از فرمول فاکتوریل
def factorial(x):
if x == 0 or x == 1:
return 1
result = 1
for i in range(2, x + 1):
result *= i
return result
def comb(n, k):
if k > n:
return 0
return factorial(n) // (factorial(k) * factorial(n - k))
روش ۲: پیادهسازی مستقیم با حلقه
def comb(n, k):
if k > n:
return 0
if k == 0 or k == n:
return 1
k = min(k, n - k)
result = 1
for i in range(1, k + 1):
result = result * (n - k + i) // i
return result
روش دوم کارآمدتر است زیرا از محاسبهی فاکتوریل کامل جلوگیری میکند و با استفاده از ویژگی
C(n, k) = C(n, n-k)، محاسبات را بهینهتر انجام میدهد.
✅ این تمرین را در ویرایشگر خود پیادهسازی کنید و با ورودیهای مختلف تست کنید. به یاد داشته باشید که تابع باید مقدار را برگرداند (return)، نه چاپ کند!
نمونهها
comb(5, 3) comb(10, 0) comb(10, 2) comb(5, 7)
10 1 45 0
comb(3, 2)
comb(3, 0)
comb(3, 4)
type(comb(1, 1)).__name__ in ("int", "float")3 1 0 True
[comb(20, 10), comb(0, 0), comb(20, 20), comb(1, 0)]
[184756, 1, 1, 1]
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود