محاسبه فاکتوریل در پایتون — به زبان ساده + کد برنامه
یافتن فاکتوریل یک عدد، نیازی اساسی در تجزیه و تحلیل دادهها و سایر تحلیلهای ریاضیاتی در پایتون به حساب میآید. در این مقاله به آموزش نحوه محاسبه فاکتوریل در پایتون با سه رویکرد متفاوت پرداخته شده است. اما پیش از آن که چگونگی محاسبه فاکتوریل در پایتون مورد بررسی قرار بگیرد، ابتدا باید به این سوال پاسخ داده شود که فاکتوریل چیست و به چه معناست؟
فاکتوریل چیست؟
در ریاضیات، فاکتوریل یک عدد یعنی آن عدد در تمام اعداد طبیعی پیش از خود ضرب شود. فاکتوریل به صورت نمادین، با علامت «!» نشان داده میشود. به این ترتیب، n فاکتوریل حاصل ضرب n عدد طبیعی اولیه است و به صورت !n نمایش داده میشود. به عنوان مثال، !5 (فاکتوریل ۵) یعنی اعداد یک تا ۵ همگی باید در یکدیگر ضرب شوند.
در صورت محاسبه ضرب اعداد ۱ تا ۵، مقدار پنج فاکتوریل که ۱۲۰ است به دست خواهد آمد. البته باید توجه داشت که محاسبه فاکتوریل تنها برای اعداد مثبت امکانپذیر است و نمیتوان آن را برای اعداد منفی به کار برد. علاوه بر این، به عنوان یک قانون کلی، همیشه فاکتوریل عدد صفر برابر یک است. به منظور درک بهتر مفاهیم پایه فاکتوریل، میتوان از تصویر زیر کمک گرفت:
اکنون با مشخص شدن مفهوم فاکتوریل در ریاضی و پاسخ به این سوال که فاکتوریل چیست ، نحوه محاسبه فاکتوریل در پایتون و و کدهای آن در ادامه این مقاله شرح داده شده است. برای آشنایی بیشتر و دقیقتر با مفهوم فاکتوریل ، مطالعه مقاله زیر پیشنهاد میشود:
برنامه محاسبه فاکتوریل در پایتون
در این بخش از مقاله «محاسبه فاکتوریل در پایتون» ابتدا هر یک از گامهای الگوریتم فاکتوریل شرح داده میشوند و در ادامه به انواع روشهای محاسبه آن اشاره خواهد شد.
الگوریتم محاسبه فاکتوریل در پایتون
در این بخش از مقاله «محاسبه فاکتوریل در پایتون»، کارکرد الگوریتم فاکتوریل به صورت مرحله به مرحله فهرست شده است:
- در ابتدا باید یک عدد صحیح مثبت از کاربر دریافت و در متغیر n قرار داده شود.
- عدد یک در متغیر factorial قرار داده شود.
- لازم است یک شمارنده، به منظور شمارش ۱ تا n استفاده شود (این شمارنده برای افزایش تعداد ورودیهای داده شده کاربرد دارد).
- حال باید مقدار متغیر factorial در متغیر i ضرب شود و حاصل آن در factorial قرار بگیرد.
- در صورتی که i از n کوچکتر باشد، باید مجدداً به گام 4 بازگشت.
- چاپ خروجی یا همان فاکتوریل محاسبهشده عدد n
- خاتمه اجرای کدها
همانطور که ملاحظه میشود، الگوریتم محاسبه فاکتوریل یک عدد، چندان پیچیده و دشوار نیست. حال در ادامه این مقاله، چگونگی تبدیل الگوریتم فوق به یک برنامه با استفاده از زبان برنامه نویسی پایتون شرح داده شده است.
انواع روشهای محاسبه فاکتوریل در پایتون
محاسبه فاکتوریل در پایتون با روشهای مختلفی قابل پیادهسازی است. در ادامه انواع روشهای محاسبه فاکتوریل در پایتون و کدهای مربوط به آنها به زبان ساده معرفی میشوند.
این روشها سه مورد زیر را شامل میشوند:
- استفاده از حلقه for
- استفاده از تابع بازگشتی
- استفاده از تابع factorial کتابخانه math
روش اول: محاسبه فاکتوریل در پایتون با حلقه for
در این رویکرد تکرارشونده (Iterative)، با استفاده از الگوریتم ارائه شده در بخش قبلی این مقاله، ابتدا یک عدد صحیح از کاربر دریافت میشود و در ادامه لازم است متغیری با نام factorial تعریف و به آن مقدار یک اختصاص داده شود.
این کار با استفاده از کدهای زیر انجام میشود:
number = int(input("please Enter integer number: "))
factorial = 1
پس از نوشتن کدهای فوق، یک حلقهی تکرار for لازم است تا با استفاده از آن از 1 تا number پیمایش انجام شود. باید توجه کرد که تمام اعداد کوچکتر مساوی number درون این حلقه شمارش از یک تا خود آن عدد همگی در هم ضرب شدهاند و در نهایت، حاصل در متغیر factorial قرار میگیرد. نحوه نوشتن حلقه تکرار for در ادامه آمده است:
...
for i in range(1, number+1):
factorial = factorial * i
مشابه مراحل ذکر شده در بخش کارکرد الگوریتم، اکنون باید مقدار محاسبه شده فاکتوریل موجود در متغیر factorial چاپ شود. کدهای زیر به منظور چاپ فاکتوریل عدد دریافت شده از کاربر استفاده میشوند:
…
print("The factorial of {} is: {}".format(number, factorial))
به منظور درک بهتر و اجتناب از هر گونه سردرگمی و ابهام، قطعه کد مربوط به محاسبه فاکتوریل با حلقه for در پایتون به صورت یک جا در ادامه آمده است:
number = int(input("please Enter integer number: ")) factorial = 1 for i in range(1, number+1): factorial = factorial * i print("The factorial of {} is: {}".format(number, factorial))
حال برای تست کدهای فوق، فاکتوریل عدد ۱۴ به عنوان مثال در ادامه محسابه شده است:
please Enter integer number: 14
The factorial of 14 is: 87178291200
- مقاله پیشنهادی: تکرارها و حلقه ها (Iterations and Loops) در پایتون — به زبان ساده
روش دیگر برای محاسبه فاکتوریل در پایتون ، استفاده از توابع بازگشتی است که در ادامه به آن پرداخته خواهد شد.
روش دوم: محاسبه فاکتوریل در پایتون با تابع بازگشتی
علاوه بر حلقه تکرار، میتوان از تابع بازگشتی نیز برای محاسبه فاکتوریل در پایتون استفاده کرد. منظور از توابع بازگشتی، تابعهایی است که برای اجرای کامل به تعداد مورد نیاز خودشان را به طور پی در پی فراخوانی می کنند. این فراخوانیهای پی در پی تا زمانی که برنامه به «پایه تابع» برسد ادامه خواهند داشت. در بیشتر مواقع، از توابع بازگشتی برای محاسبه دنبالههای ریاضی یا حل مسائل ریاضی استفاده میشود. چرا که معمولاً یک فرمول تعریف شده وجود دارد که برای محاسبه پاسخ مسئله مورد استفاده قرار میگیرد.
به طور کلی، با استفاده از رویکرد بازگشتی، تابع به گونهای ایجاد میشود که در هر فراخوانی مسئله کوچکسازی خواهد شد تا در نهایت به حالت پایه برسد. پس از آن، این تابع با بازگشت به عقب و جایگزینی مرحله به مرحله جوابهای به دست آمده در رابطه، به جواب اصلی مسئله میرسد. برای پیادهسازی تایع بازگشتی محاسبه فاکتوریل در پایتون، ابتدا باید یک تابع برای آن تعریف شود. تابع بازگشتی با نام factorial با استفاده از کدهای زیر تعریف میشود:
def factorial(n):
if n == 0:
return 1
باید توجه داشت که در تابع فوق یک شرط با استفاده از دستور If نوشته شده است. در صورتی که مقدار دریافتی از کاربر (متغیر n) برابر صفر باشد، این دستور شرطی مقدار یک را در خروجی بازمیگرداند. همانطور که در بخشهای مقدماتی به آن اشاره شد، فاکتوریل عدد صفر برابر یک است. اکنون پس از دستور if باید شرط دیگری هم اضافه میشود. این شرط زمانی اجرا میشود که عدد دریافتی از کاربر مقداری به غیر از صفر باشد. کدهای مربوطه در ادامه ملاحظه میشوند:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
نکته قابل توجه در مورد تابع فوق این است که پس از دریافت عدد توسط این تابع، تا زمانی که تابع به مقدار یک برسد، به صورت بازگشتی و داخلی در برنامه فراخوانی میشود. زمانی که برنامه به پایه تابع بازگشتی یعنی عدد ۱ رسید، جواب اصلی با جایگزین کردن هر جواب در تابع قبلی خود حاصل میشود. حال با کمک کدهای فوق یک عدد از کاربر دریافت میشود:
...
number = int(input("please Enter integer number: "))
result = factorial(number)
print("The factorial of {} is: {}".format(number, result))
برنامه کامل محاسبه فاکتوریل در پایتون با استفاده از تابع بازگشتی به شکل زیر قابل پیادهسازی است:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
number = int(input("please Enter integer number: "))
result = factorial(number)
print("The factorial of {} is: {}".format(number, result))
برای مثال، خروجی محاسبه فاکتوریل در پایتون با استفاده از تابع بازگشتی برای عدد ۵ به صورت زیر است:
please Enter integer number: 5
The factorial of 5 is: 120
- مقاله پیشنهادی: تابع بازگشتی در پایتون — به زبان ساده
روش سوم : محاسبه فاکتوریل در پایتون با تابع factorial کتابخانه math
میتوان محاسبه فاکتوریل در پایتون را با به کارگیری ماژول ریاضی پایتون با نام Math انجام داد. کتابخانه ریاضیات پایتون حاوی طیف وسیعی از متُدهای کاربردی برای اجرای توابع ریاضی است. به عنوان مثال، امکان استفاده از کتابخانه Math برای تولید اعداد تصادفی وجود دارد.
لازم به ذکر است که پیش از استفاده از ماژول Math پایتون، باید آن را در پروژه اضافه (Import) کرد. پس از آن، میتوان با کمک تابع ()factorial از کتابخانه ریاضی پایتون، مقدار فاکتوریل عدد دریافتی را محاسبه کرد. برای محاسبه فاکتوریل در پایتون با کمک کتابخانه math، از کدهای زیر استفاده میشود:
import math
number = int(input("please Enter integer number: "))
result = math.factorial(number)
print("The factorial of {} is: {}".format(number, result))
خروجی محاسبه فاکتوریل عدد ۱۰ با استفاده از روش فوق به صورت زیر است:
please Enter integer number: 10
The factorial of 10 is: 3628800
در صورتی که در برنامه محاسبه فاکتوریل یک عدد منفی مثل ۱۵- توسط کاربر وارد شود، خطای زیر نمایش داده خواهد شد:
please Enter integer number: -15
Traceback (most recent call last):
File “c:/Users/Faradars/Desktop/Python/factorial.py”, line 21, in
result = math.factorial(number)
ValueError: factorial() not defined for negative values
در چنین شرایطی به منظور پیشگیری از بروز خطاهایی همچون خطای فوق، باید اصلاحاتی در کدهای مربوطه انجام شود. تا اینجا، سه روش مختلف محاسبه فاکتوریل در پایتون شرح داده و کدهای آن ارائه شدند. برای اجتناب از بروز خطا، لازم است در ابتدای برنامه محاسبه فاکتوریل یک دستور شرطی به منظور بررسی عدد دریافتی از کاربر نوشته شود. در واقع، این شرط بررسی میکند که آیا عدد وارد شده توسط کاربر مثبت است یا منفی. در بخش بعدی مقاله «محاسبه فاکتوریل در پایتون» به نحوه اضافه کردن این شرط پرداخته شده است.
- مقاله پیشنهادی: آشنایی با ماژول Math در پایتون — از صفر تا صد
کدهای بهبود یافته برای جلوگیری از بروز خطا در صورت منفی بودن عدد ورودی
کدهای بهبود یافته مربوط به هر یک از روشهای محاسبه فاکتوریل در پایتون در این بخش ارائه شدهاند. در تمام این کدها پیش از محاسبه فاکتوریل در پایتون ، با استفاده از دستور شرطی if بررسی میشود که عدد وارد شده توسط کاربر منفی نباشد.
کدهای بهبود یافته محاسبه فاکتوریل در پایتون با استفاده از حلقه for به صورت زیر است:
number = int(input("please Enter integer number: "))
if number
کدهای بهبود یافته محاسبه فاکتوریل در پایتون با استفاده از تابع بازگشتی نیز در ادامه آمده است:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
number = int(input("please Enter integer number: "))
if number
در نهایت، کدهای بهبود یافته محاسبه فاکتوریل در پایتون با استفاده از کتابخانه math نیز به صورت زیر هستند:
import math
number = int(input("please Enter integer number: "))
if number
خروجی کدهای بهبود یافته محاسبه فاکتوریل در پایتون
خروجی هر سه قطعه کد فوق برای عدد ۱۵- به صورت زیر است:
lease Enter integer number: -15
Sorry, factorial does not exist for negative numbers
حال در بخش پایانی از مقاله «محاسبه فاکتوریل در پایتون» به معرفی برخی از دورههای کاربردی و شاخص مرتبط با زبان برنامه نویسی پایتون پرداخته شده است.
جمعبندی
در این مقاله به نحوه محاسبه فاکتوریل در پایتون با استفاده از سه رویکرد مختلف پرداخته شد. این سه رویکرد شامل محاسبه فاکتوریل در پایتون با حلقه for، محاسبه فاکتوریل در پایتون به روش بازگشتی و در نهایت محاسبه فاکتوریل در پایتون با استفاده از تابع Factorial در کتابخانه Math پایتون است.
پیش از آموزش محاسبه فاکتوریل در پایتون با استفاده از هر کدام از روشهای بیان شده، مفهوم فاکتوریل و چیستی آن در ریاضیات شرح داده شد. علاوه بر این، فیلمهای آموزشی مرتبط نیز در این مقاله برای یادگیری بیشتر معرفی شدند. امید است این مقاله مفید واقع شده باشد.