به آموزشگاه مجازی سینا خوش آمدید!

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

امتیاز
(0)

مفهوم بازگشت(Recursion)

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

مثال شماره 1

یک تابع بازگشتی ساده که از 5 به صورت معکوس می‌شمارد:

def countdown(n):
  if n <= 0:
    print("Done!")
  else:
    print(n)
    countdown(n - 1)

countdown(5)

نتیجه:

5
4
3
2
1
Done!
امتحان کنید

شرط پایه(Base Case) و شرط بازگشتی(Recursive Case)

هر تابع بازگشتی باید دو بخش داشته باشد:

  1. یک شرط پایه: یک شرط که بازگشت را متوقف می‌کند. 
  2. یک شرط بازگشتی: تابعی که خودش را با یک آرگومان اصلاح شده فراخوانی می‌کند(صدا می‌زند).

اگر شرط پایه را مشخص نکنیم، این تابع برای همیشه خودش را فراخوانی می‌کند و باعث خطای سرریز پشته(stack overflow) می‌شود.

مثال شماره 2

مشخص کردن شرط پایه و شرط بازگشتی:

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

print(factorial(5))

نتیجه:

120
امتحان کنید

شرط پایه(base case) بسیار مهم است. همواره مطمئن شوید که تابع بازگشتی شما یک شرط داشته باشد که سرانجام تحقق پیدا کند. 


دنباله‌ی فیبوناچی(Fibonacci)

دنباله‌ی فیبوناچی، یک مثال قدیمی است که در آن، هر عدد، از جمع دو عددی قبلی آن به دست می‌آید. این دنباله با اعداد 0 و 1 شروع می‌شود:

0, 1, 1, 2, 3, 5, 8, 13, ...

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

مثال شماره 3

پیدا کردن هفتمین عدد در دنباله‌ی فیبوناچی:

def fibonacci(n):
  if n <= 1:
    return n
  else:
    return fibonacci(n - 1) + fibonacci(n - 2)

print(fibonacci(7))

نتیجه:

13
امتحان کنید

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


منبع: www.w3schools.com/python

 

  • بازدید: 10

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال