درخواست های ارتباط
جستجو تنظیمات
لیست دوستان من

آموزش زبان پایتون :: قسمت هجدهم - توابع بازگشتی (Recursive Functions)

10 نظرات
تا اینجا یاد گرفتیم که چگونه می توان بوسیله توابع کدها را به قطعات مختلف تقسیم کرد، به هر کدام از این قطعات یک نام تخصیص داد و بوسیله نام انتخاب شده توابع را فراخوانی کرد. در این قسمت می خواهیم با روش نوشتن توابع بازگشتی در زبان پایتون آشنا شویم. توابع بازگشتی توابعی هستند که در داخل بدنه تابع مجدد همان تابع فراخوانی می شود. در کد زیر با نحوه نوشتن توابع بازگشتی آشنا می شوید:

def func(n):
    func(n)

اما نوشتن یک تابع بازگشتی تنها با فراخوانی تابع در بدنه آن کافی نیست، در کد بالا تابع func در بدنه خودش، خودش را فراخوانی می کند و این کار به تعداد نامحدود ادامه پیدا می کند. در توابع بازگشتی باید در بدنه تابع شرطی تعیین شود که در یک شرایط خاص از ادامه فراخوانی توابع جلوگیری شود. برای آشنایی بیشتر با یک مثال ادامه می دهیم و مثال مورد نظر را هم در حالت عادی و هم بوسیله توابع بازگشتی پیاده سازی می کنیم. مثالی که استفاده می کنیم تابعی است که دو عدد را به عنوان ورودی دریافت کرده و عدد اول را به توان عدد دوم می رساند. در حالت عادی این تابع به صورت زیر پیاده سازی می شود:

>>> def pow(x,y):
...     result = 1
...     while(y > 0):
...         result *= x
...         y -= 1
...     return result
...
>>> pow(2,4)
16
>>> pow(5,5)
3125

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

>>> def pow(x,y):
...     if y==1:
...         return x
...     return x * pow(x,y-1)
...
>>> pow(2,4)
16
>>> pow(5,5)
3125

به تابع pow دقت کنید، در ابتدای تابع بررسی کردیم که اگر مقدار y برابر 1 بود مقدار x برگردانده شود، در غیر اینصورت مجدد تابع pow را با مقدار x و y - 1 فراخوانی می کنیم. نکته مهم در اینجا این است که با هر بار فراخوانی مجدد تابع pow یک واحد از y کم می شود تا زمانی که مقدار y برابر 1 شود، زمانی که مقدار y برابر 1 باشد، شرط تابع برقرار شده و به جای فراخوانی مجدد pow مقدار x بازگردانده می شود. در زیر مراحل فراخوانی تابع pow را برای مقادیر x=2 و y=4 مشاهده می کنید:

pow(2,4) # 1st call
2 * pow(2,3) # 2st call
2 * 2 * pow(2,2) 3st call
2 * 2 * 2 * pow(2,1) 4st call
2 * 2 * 2 * 2 # return 2 from 4th call
2 * 2 * 4 # return 4 from 3th call
2 * 8 # return 8 from 2th call
16 # return 16 from 1th call

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

>>> def fact(n):
...     if n==1:
...         return n
...     return n*fact(n-1)
...
>>> fact(4)
24
>>> fact(5)
120

در قسمت بعدی آموزش با Module ها و دستور import آشنا خواهیم شد. ITpro باشید

نویسنده: حسین احمدی
منبع: ITpro
ردیف عنوان قیمت
1 آموزش زبان پایتون :: قسمت اول - مقدمات و آشنایی اولیه با پایتون رایگان
2 آموزش زبان پایتون :: قسمت دوم - دانلود پایتون و نوشتن اولین برنامه رایگان
3 آموزش زبان پایتون :: قسمت سوم - آشنایی با ساختار اسکریپت های پایتون رایگان
4 آموزش زبان پایتون :: قسمت چهارم - نوع های داده در زبان پایتون رایگان
5 آموزش زبان پایتون :: قسمت پنجم - تبدیل نوع ها به یکدیگر رایگان
6 آموزش زبان پایتون :: قسمت ششم - عملگرها در پایتون رایگان
7 آموزش زبان پایتون :: قسمت هفتم - دستور if رایگان
8 آموزش زبان پایتون :: قسمت هشتم - حلقه ها رایگان
9 آموزش زبان پایتون :: قسمت نهم - نوع های عددی و توابع کار با اعداد رایگان
10 آموزش زبان پایتون :: قسمت دهم - کار با رشته ها و توابع مرتبط رایگان
11 آموزش زبان پایتون :: قسمت یازدهم - لیست ها رایگان
12 آموزش زبان پایتون :: قسمت دوازدهم - Tuple ها رایگان
13 آموزش زبان پایتون :: قسمت سیزدهم - دیکشنری ها (Dictionaries) رایگان
14 آموزش زبان پایتون :: قسمت چهاردهم - مجموعه ها (Sets) رایگان
15 آموزش زبان پایتون :: قسمت پانزدهم - تابع zip و پیمایش چند لیست به صورت همزمان رایگان
16 آموزش زبان پایتون :: قسمت پانزدهم - روش Comprehension برای ایجاد لیست ها، دیکشنری ها و مجموعه ها رایگان
17 آموزش زبان پایتون :: قسمت شانزدهم - توابع (Functions) رایگان
18 آموزش زبان پایتون :: قسمت هفدهم - Closure ها رایگان
19 آموزش زبان پایتون :: قسمت هجدهم - توابع بازگشتی (Recursive Functions) رایگان
20 آموزش زبان پایتون :: قسمت نوزدهم - ماژول ها (Modules) رایگان
21 آموزش زبان پایتون :: قسمت بیستم - پکیج ها (Packages) رایگان
22 برنامه نویسی شئ گرا در پایتون :: مقدمات و آشنایی با کلاس و شئ رایگان
نظرات
  • مفید و عالی بود
  • با سلام و خسته نباشید،
    عزیز این آموزش هنوز ادامه داره دیگه درسته ؟
    کی وارد محیط PyCharm میشیم؟
    ممنون از آموزش عالیتون.
  • کسی نیست جواب بده ؟
    این آموزش متوقف شده ؟
  • سلام دوست عزیز، عذر خواهی میکنم، فراموش کردم جوابتون رو بدم، آموزش ادامه داره، اما در مورد PyCharm تو این دوره در موردش صحبتی نمیشه.
  • سلام و تشکر بابت جوابتون،
    یعنی آموزش این دوره فقط مرتبط با کنسول هستش؟
    پس برای ساخت برنامه های جانبی از چه دوره هایی میتونیم استفاده کنیم؟
    میشه راهنمایی کنید ؟

  • سلام مجدد، به زودی فیلم آموزشی پایتون روی سایت قرار میگیره و می تونید از اون دوره استفاده کنید.
  • و برای سوال آخر،
    به نظرتون این دوره رو ادامه بدم تا به آخر برسه و بعد که وارد بخش PyCharm شدید باز هم ادامه بدم ،
    یا برای PyCharm منتظر بمونم؟
    چون بنده C# رو تا حدودی با برنامه های تحت ویندوز اپلیکیشن کار کردم.
    خیلی ممنون میشم راهنمایی برفمایید.
  • شما اگر قصد یادگیری پایتون دارید مطالعه کنید مطالب رو. چون در هر صورت باید مقدمات پایتون رو یاد بگیرید و این سری برای آشنایی با مفدمات مناسب هست.
  • خیلی ممنون از پاسخ و آموزشتون.
  • سلام، خسته نباشید!
    ببخشید در پایان قسمت هجدهم یا قسمت اخر نوشتین در قسمت بعد ماژول ها تدریس خواهد شد!
    اما اصلا قسمتی به این عنوان نیست!
    چیکار باد بکنم؟
    ممنون

برای ارسال نظر ابتدا به سایت وارد شوید

arrow