سبد خرید

بستن سبد خرید

هیچ محصولی در سبد خرید نیست.

تعداد محصول: 0 کل قیمت: تومان0

محاسبه فاکتوریل در پایتون

محاسبه فاکتوریل در پایتون ، در دنیای برنامه‌نویسی، نوشتن یک برنامه برای حل مسائل ریاضی یکی از دلچسب‌ترین کارهای ممکن است. با نوشتن چند خط کد، می‌توانیم مسائلی که برای حل شدن به صورت دستی، به زمان قابل توجه‌ای نیاز دارند را در مدت زمانی کوتاه حل کنیم. پایتون، از آن دسته زبان‌های برنامه‌نویسی است که در علوم مختلف به ویژه ریاضیات کاربرد فراوانی دارد. در این مقاله، برنامه‌ای برای به دست آوردن فاکتوریل یک عدد می‌نویسیم. در ادامه با ما همراه باشید.

 

فاکتوریل چیست؟

در ریاضیات، فاکتوریل یک عدد، از حاصل‌ ضرب تمام اعداد صحیح از یک تا خود آن عدد، به‌دست می‌آید. به عنوان مثال فاکتوریل 5 برابر است با:

1*2*3*4*5 = 120

فاکتوریل فقط شامل اعداد صحیح مثبت است و برای اعداد منفی تعریف نشده است. ضمن آن که فاکتوریل عدد صفر همیشه یک است.

برنامه‌ی محاسبه‌ی فاکتوریل در زبان پایتون

در زبان برنامه‌نویسی پایتون، از چندین روش می‌توان برنامه‌ای نوشت که فاکتوریل یک عدد را محاسبه کند. در این مقاله روش‌های مختلف را بررسی می‌کنیم.

الگوریتم برنامه‌ی فاکتوریل به صورت زیر است:

  1. یک عدد صحیح بگیر و در n قرار بده.
  2. عدد 1 را در factorial قرار بده.
  3. یک شمارنده به نام i انتخاب کن و 1 را در آن قرار بده.
  4. factorial را در i ضرب کن و در factorial قرار بده.
  5. اگر i از n کوچک‌تر است، به گام 4 برگرد.
  6. مقدار factorial را چاپ کن.
  7. به اجرای کد خاتمه بده.

همان‌گونه که ملاحظه می‌کنید محاسبه فاکتوریل یک عدد، به صورت الگوریتم کار راحتی است. در ادامه این الگوریتم را با زبان پایتون به یک برنامه تبدیل خواهیم کرد که رایانه آن را محاسبه کند.

 

روش اول: محاسبه‌ فاکتوریل با حلقه 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))

پست های مشابه

27اسفند 1399

بیشتر دانشجویان کامپیوتر وقتی تازه وارد دانشگاه می شوند، در درس برنامه نویسی زبان C با سوال مسئله ی “چاپ اعداد ۱ تا ۱۰ با حلقه for” مواجه می شوند. در این مطلب سورس کد این برنامه را به صورت آماده در اختیار دانشجویان قرار دادیم. این برنامه منبع خوبی برای یادگیری زبان سی می باشد.

2583

0

2اسفند 1399

بدست آوردن تعداد بیشترین مقسوم علیه دربین چند عدد با پایتون که بسیاری از دانشجویان به دنبال این سورس کد هستند. در این مقاله…

3403

2

18بهمن 1399

تبدیل تمامی حروف یا رشته به بزرگ یا کوچک در این مطلب ما می‌خواهیم تمامی حروف یا رشته‌ی مورد نظر را به حروف کوچک و یا حروف بزرگ تبدیل نمائیم.

1883

0

دیدگاه و پرسش


علی

1 بهمن 1399

جالب بود و بسیار عالی خیلی عالی میشه اگه آموزش python بزارید.

    شاه‌کد

    1 بهمن 1399

    مرسی بسیار ممنونم،چشم