PYTHON_WITH_MOHAMMAD Telegram 29
توابع بازگشتی در پایتون

مقدمه

توابع بازگشتی (Recursive Functions) توابعی هستند که درون خودشان فراخوانی می‌شوند. این نوع توابع معمولاً برای حل مسائلی که می‌توانند به زیرمسائل مشابه تقسیم شوند، استفاده می‌شوند. استفاده از توابع بازگشتی می‌تواند کد را ساده‌تر و مختصرتر کند، به‌شرطی که با دقت پیاده‌سازی شوند.

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

ساختار تابع بازگشتی

یک تابع بازگشتی معمولاً شامل دو بخش اصلی است:
1. پایه (Base Case): شرطی که باعث می‌شود تابع متوقف شود. برای مثال، اگر به یک عدد خاص برسیم، تابع دیگر خود را فراخوانی نمی‌کند.
2. حالت بازگشتی (Recursive Case): قسمتی از تابع که در آن تابع خودش را با مقادیری تغییر یافته فراخوانی می‌کند.

مثال 1: محاسبه فاکتوریل

فاکتوریل یک عدد طبیعی \( n \) به صورت \( n! \) تعریف می‌شود و به صورت زیر محاسبه می‌شود:
- \( 0! = 1 \)
- \( n! = n \times (n-1)! \) برای \( n > 0 \)

در اینجا یک تابع بازگشتی برای محاسبه فاکتوریل در پایتون داریم:

def factorial(n):
if n == 0: # پایه
return 1
else: # حالت بازگشتی
return n * factorial(n - 1)

# مثال استفاده
num = 5
print(f"فاکتوریل {num} برابر است با: {factorial(num)}")


خروجی:
فاکتوریل 5 برابر است با: 120


مثال 2: سری فیبوناچی

سری فیبوناچی یک دنباله عددی است که در آن هر عدد مجموع دو عدد قبلی خود است:
- \( F(0) = 0 \)
- \( F(1) = 1 \)
- \( F(n) = F(n-1) + F(n-2) \) برای \( n > 1 \)

اینجا تابعی بازگشتی برای محاسبه یک عدد در سری فیبوناچی داریم:

def fibonacci(n):
if n == 0: # پایه
return 0
elif n == 1: # پایه
return 1
else: # حالت بازگشتی
return fibonacci(n - 1) + fibonacci(n - 2)

# مثال استفاده
n = 6
print(f"عدد فیبوناچی {n} برابر است با: {fibonacci(n)}")


خروجی:
عدد فیبوناچی 6 برابر است با: 8


مثال 3: جمع اعداد از 1 تا n

می‌توانیم با استفاده از تابع بازگشتی، مجموع اعداد از 1 تا \( n \) را محاسبه کنیم. فرمول آن به صورت زیر است:
- \( sum(n) = n + sum(n - 1) \) برای \( n > 0 \)
- \( sum(0) = 0 \)

def sum_of_n(n):
if n == 0: # پایه
return 0
else: # حالت بازگشتی
return n + sum_of_n(n - 1)

# مثال استفاده
n = 5
print(f"مجموع اعداد از 1 تا {n} برابر است با: {sum_of_n(n)}")


خروجی:
مجموع اعداد از 1 تا 5 برابر است با: 15


نکات مهم در مورد توابع بازگشتی

- پایه‌ها: حتماً باید پایه‌‌هایی برای شکست تابع در نظر بگیرید تا از یک حلقه بی‌پایان جلوگیری شود.
- کارایی: توابع بازگشتی ممکن است باعث افزایش مصرف حافظه و زمان اجرا شوند. برای مثال، تابع فیبوناچی به دلیل تکرار محاسبات برای اعداد قبلی، کارایی پایینی دارد. در این موارد می‌توانید از روش‌های دیگر (مثل برنامه‌نویسی دینامیک) استفاده کنید.
- خوانایی کد: یکی از مزایای توابع بازگشتی، خوانایی بالای کد است. با دیدن تابع، معمولاً راحت‌تر می‌توان فهمید که الگوریتم چه کار می‌کند.

نتیجه‌گیری

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


امیدوارم که این توضیحات و مثال‌ها به شما در درک توابع بازگشتی کمک کند. اگر سوالی دارید یا نیاز به مثال‌های بیشتری دارید، خوشحال می‌شوم که کمک کنم! 🌟

@python_with_mohammad
👍1



tgoop.com/python_with_mohammad/29
Create:
Last Update:

توابع بازگشتی در پایتون

مقدمه

توابع بازگشتی (Recursive Functions) توابعی هستند که درون خودشان فراخوانی می‌شوند. این نوع توابع معمولاً برای حل مسائلی که می‌توانند به زیرمسائل مشابه تقسیم شوند، استفاده می‌شوند. استفاده از توابع بازگشتی می‌تواند کد را ساده‌تر و مختصرتر کند، به‌شرطی که با دقت پیاده‌سازی شوند.

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

ساختار تابع بازگشتی

یک تابع بازگشتی معمولاً شامل دو بخش اصلی است:
1. پایه (Base Case): شرطی که باعث می‌شود تابع متوقف شود. برای مثال، اگر به یک عدد خاص برسیم، تابع دیگر خود را فراخوانی نمی‌کند.
2. حالت بازگشتی (Recursive Case): قسمتی از تابع که در آن تابع خودش را با مقادیری تغییر یافته فراخوانی می‌کند.

مثال 1: محاسبه فاکتوریل

فاکتوریل یک عدد طبیعی \( n \) به صورت \( n! \) تعریف می‌شود و به صورت زیر محاسبه می‌شود:
- \( 0! = 1 \)
- \( n! = n \times (n-1)! \) برای \( n > 0 \)

در اینجا یک تابع بازگشتی برای محاسبه فاکتوریل در پایتون داریم:

def factorial(n):
if n == 0: # پایه
return 1
else: # حالت بازگشتی
return n * factorial(n - 1)

# مثال استفاده
num = 5
print(f"فاکتوریل {num} برابر است با: {factorial(num)}")


خروجی:
فاکتوریل 5 برابر است با: 120


مثال 2: سری فیبوناچی

سری فیبوناچی یک دنباله عددی است که در آن هر عدد مجموع دو عدد قبلی خود است:
- \( F(0) = 0 \)
- \( F(1) = 1 \)
- \( F(n) = F(n-1) + F(n-2) \) برای \( n > 1 \)

اینجا تابعی بازگشتی برای محاسبه یک عدد در سری فیبوناچی داریم:

def fibonacci(n):
if n == 0: # پایه
return 0
elif n == 1: # پایه
return 1
else: # حالت بازگشتی
return fibonacci(n - 1) + fibonacci(n - 2)

# مثال استفاده
n = 6
print(f"عدد فیبوناچی {n} برابر است با: {fibonacci(n)}")


خروجی:
عدد فیبوناچی 6 برابر است با: 8


مثال 3: جمع اعداد از 1 تا n

می‌توانیم با استفاده از تابع بازگشتی، مجموع اعداد از 1 تا \( n \) را محاسبه کنیم. فرمول آن به صورت زیر است:
- \( sum(n) = n + sum(n - 1) \) برای \( n > 0 \)
- \( sum(0) = 0 \)

def sum_of_n(n):
if n == 0: # پایه
return 0
else: # حالت بازگشتی
return n + sum_of_n(n - 1)

# مثال استفاده
n = 5
print(f"مجموع اعداد از 1 تا {n} برابر است با: {sum_of_n(n)}")


خروجی:
مجموع اعداد از 1 تا 5 برابر است با: 15


نکات مهم در مورد توابع بازگشتی

- پایه‌ها: حتماً باید پایه‌‌هایی برای شکست تابع در نظر بگیرید تا از یک حلقه بی‌پایان جلوگیری شود.
- کارایی: توابع بازگشتی ممکن است باعث افزایش مصرف حافظه و زمان اجرا شوند. برای مثال، تابع فیبوناچی به دلیل تکرار محاسبات برای اعداد قبلی، کارایی پایینی دارد. در این موارد می‌توانید از روش‌های دیگر (مثل برنامه‌نویسی دینامیک) استفاده کنید.
- خوانایی کد: یکی از مزایای توابع بازگشتی، خوانایی بالای کد است. با دیدن تابع، معمولاً راحت‌تر می‌توان فهمید که الگوریتم چه کار می‌کند.

نتیجه‌گیری

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


امیدوارم که این توضیحات و مثال‌ها به شما در درک توابع بازگشتی کمک کند. اگر سوالی دارید یا نیاز به مثال‌های بیشتری دارید، خوشحال می‌شوم که کمک کنم! 🌟

@python_with_mohammad

BY آموزش پایتون و برنامه نویسی


Share with your friend now:
tgoop.com/python_with_mohammad/29

View MORE
Open in Telegram


Telegram News

Date: |

As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. The public channel had more than 109,000 subscribers, Judge Hui said. Ng had the power to remove or amend the messages in the channel, but he “allowed them to exist.” How to create a business channel on Telegram? (Tutorial) Click “Save” ; 5Telegram Channel avatar size/dimensions
from us


Telegram آموزش پایتون و برنامه نویسی
FROM American