محاسبه فاکتوریل در پایتون ، در دنیای برنامهنویسی، نوشتن یک برنامه برای حل مسائل ریاضی یکی از دلچسبترین کارهای ممکن است. با نوشتن چند خط کد، میتوانیم مسائلی که برای حل شدن به صورت دستی، به زمان قابل توجهای نیاز دارند را در مدت زمانی کوتاه حل کنیم. پایتون، از آن دسته زبانهای برنامهنویسی است که در علوم مختلف به ویژه ریاضیات کاربرد فراوانی دارد. در این مقاله، برنامهای برای به دست آوردن فاکتوریل یک عدد مینویسیم. در ادامه با ما همراه باشید.
فاکتوریل چیست؟
در ریاضیات، فاکتوریل یک عدد، از حاصل ضرب تمام اعداد صحیح از یک تا خود آن عدد، بهدست میآید. به عنوان مثال فاکتوریل 5 برابر است با:
1*2*3*4*5 = 120
فاکتوریل فقط شامل اعداد صحیح مثبت است و برای اعداد منفی تعریف نشده است. ضمن آن که فاکتوریل عدد صفر همیشه یک است.
برنامهی محاسبهی فاکتوریل در زبان پایتون
در زبان برنامهنویسی پایتون، از چندین روش میتوان برنامهای نوشت که فاکتوریل یک عدد را محاسبه کند. در این مقاله روشهای مختلف را بررسی میکنیم.
الگوریتم برنامهی فاکتوریل به صورت زیر است:
- یک عدد صحیح بگیر و در n قرار بده.
- عدد 1 را در factorial قرار بده.
- یک شمارنده به نام i انتخاب کن و 1 را در آن قرار بده.
- factorial را در i ضرب کن و در factorial قرار بده.
- اگر i از n کوچکتر است، به گام 4 برگرد.
- مقدار factorial را چاپ کن.
- به اجرای کد خاتمه بده.
همانگونه که ملاحظه میکنید محاسبه فاکتوریل یک عدد، به صورت الگوریتم کار راحتی است. در ادامه این الگوریتم را با زبان پایتون به یک برنامه تبدیل خواهیم کرد که رایانه آن را محاسبه کند.
روش اول: محاسبه فاکتوریل با حلقه for پایتون
در این روش، با استفاده از الگوریتمی که نوشتیم، ابتدا یک عدد صحیح از کاربر گرفته و در ادامه متغیری با نام factorial تعریف میکنیم و مقدار 1 را به آن اختصاص میدهیم:
number = int(input("please Enter integer number: ")) factorial = 1
کار بعدی ما، نوشتن یک حلقهی تکرار for است که از 1 تا number پیمایش کند و در آن تمام اعداد کوچکتر مساوی number از یک تا خودش در هم ضرب شده و حاصل در متغیر factorial قرار گیرد. به این صورت:
... for i in range(1, number+1): factorial = factorial * i
تنها کاری که باید در ادامه انجام دهیم، چاپ کردن مقدار factorial به عنوان فاکتوریل عدد number است:
… 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))
خروجی:
خروجی کد برای عدد 12 به صورت زیر است:
please Enter integer number: 12 The factorial of 12 is: 479001600
روش دوم: استفاده از توابع بازگشتی
در توابع بازگشتی، ابتدا یک حالت پایه در تابع طراحی شده و سپس همان تابع در خودش فراخوانی میشود. با این روش، تابع میتواند با کوچک کردن مسئله به حالت پایه رسیده و در ادامه با بازگشت به عقب و جایگزینی مرحله به مرحلهی جوابهای به دست آمده در رابطه، به جواب اصلی مسئله برسد.
در این روش ابتدا باید تابعی تعریف کنیم. ما در اینجا آن تابع را factorial مینامیم. سپس با استفاده از دستور شرطی if بررسی میکنیم اگر عدد داده شده، 0 باشد عدد 1 را خروجی دهد. به این صورت:
def factorial(n): if n == 0: return 1
در غیر این صورت با دستور else حاصل ضرب n در (factorial(n – 1 را خروجی میدهیم:
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
نکته: هر عددی که به این تابع داده شود با فراخوانی تابع داخلی به صورت برگشتی به عقب برگشته تا به عدد 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))
خروجی:
مثال: خروجی برای عدد 8 به صورت زیر است.
please Enter integer number: 8 The factorial of 8 is: 40320
روش سوم: استفاده از تابع factorial کتابخانهی math
با استفاده از کتابخانهی غنی math میتوانیم به سادگی، فاکتوریل یک عدد را به دست آوریم. برای این کار، ابتدا باید کتابخانه math را در برنامه وارد (import) کرده و سپس از تابع ()factorial برای رسیدن به جواب استفاده کنیم. به این صورت:
import math number = int(input("please Enter integer number: ")) result = math.factorial(number) print("The factorial of {} is: {}".format(number, result))
خروجی:
مثال: خروجی برای عدد 6 به صورت زیر است
please Enter integer number: 6 The factorial of 6 is: 720
کد بهبود یافته – فاکتوریل با حلقه for پایتون
number = int(input("please Enter integer number: ")) if number < 0: print("Sorry, factorial does not exist for negative numbers") else: factorial = 1 for i in range(1, number+1): factorial = factorial * i print("The factorial of {} is: {}".format(number, factorial))
کد بهبود یافته – فاکتوریل با توابع بازگشتی
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1) number = int(input("please Enter integer number: ")) if number < 0: print("Sorry, factorial does not exist for negative numbers") else: result = factorial(number) print("The factorial of {} is: {}".format(number, result))
کد بهبود یافته – فاکتوریل با کتابخانه math
import math number = int(input("please Enter integer number: ")) if number < 0: print("Sorry, factorial does not exist for negative numbers") else: result = math.factorial(number) print("The factorial of {} is: {}".format(number, result))
علی
1 بهمن 1399
جالب بود و بسیار عالی خیلی عالی میشه اگه آموزش python بزارید.