آموزش پایتون (Python) به زبان خیلی ساده قسمت 19 : توابع بازگشتی

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

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 باشید

نویسنده: حسین احمدی
منبع: جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#توابع_بازگشتی #آموزش_python #آموزش_زبان_python #آموزش_پایتون #توابع_بازگشتی_در_برنامه_نویسی #آموزش_برنامه_نویسی_پایتون #آموزش_زبان_پایتون #آموزش_برنامه_نویسی #recursive_function_ها_در_پایتون #توابع_بازگشتی_در_پایتون
عنوان
1 آموزش پایتون (Python) به زبان خیلی ساده قسمت 1 : آشنایی با پایتون رایگان
2 آموزش پایتون (Python) به زبان خیلی ساده قسمت 2: نوشتن برنامه اول رایگان
3 آموزش پایتون (Python) به زبان خیلی ساده قسمت 3 : ساختار اسکریپت رایگان
4 آموزش پایتون (Python) به زبان خیلی ساده قسمت 4 : نوع داده ها رایگان
5 آموزش پایتون (Python) به زبان خیلی ساده قسمت 5 : تبدیل نوع داده رایگان
6 آموزش پایتون (Python) به زبان خیلی ساده قسمت 6 : عملگرها رایگان
7 آموزش پایتون (Python) به زبان خیلی ساده قسمت 7 : دستور شرطی IF رایگان
8 آموزش پایتون (Python) به زبان خیلی ساده قسمت 8 : حلقه ها رایگان
9 آموزش پایتون (Python) به زبان خیلی ساده قسمت 9 : توابع عددی و عدد رایگان
10 آموزش پایتون (Python) به زبان خیلی ساده قسمت 10 : رشته و توابع آن رایگان
11 آموزش پایتون (Python) به زبان خیلی ساده قسمت 11 : لیست ها رایگان
12 آموزش پایتون (Python) به زبان خیلی ساده قسمت 12 : Tuple ها رایگان
13 آموزش پایتون (Python) به زبان خیلی ساده قسمت 13 : دیکشنری ها رایگان
14 آموزش پایتون (Python) به زبان خیلی ساده قسمت 14 : مجموعه ها Sets رایگان
15 آموزش پایتون (Python) به زبان خیلی ساده قسمت 15 : Zip و پیمایش رایگان
16 آموزش پایتون (Python) به زبان خیلی ساده قسمت 16 : Comprehension رایگان
17 آموزش پایتون (Python) به زبان خیلی ساده قسمت 17 : توابع (Function رایگان
18 آموزش پایتون (Python) به زبان خیلی ساده قسمت 18 : Closure ها رایگان
19 آموزش پایتون (Python) به زبان خیلی ساده قسمت 19 : توابع بازگشتی رایگان
20 آموزش پایتون (Python) به زبان خیلی ساده قسمت 20 : ماژول ها رایگان
21 آموزش پایتون (Python) به زبان خیلی ساده قسمت 21 : پکیج ها رایگان
22 آموزش پایتون (Python) به زبان خیلی ساده قسمت 22 : شی گرایی رایگان
زمان و قیمت کل 0″ 0
10 نظر
amirra87
مفید و عالی بود
FashiSt
با سلام و خسته نباشید،
عزیز این آموزش هنوز ادامه داره دیگه درسته ؟
کی وارد محیط PyCharm میشیم؟
ممنون از آموزش عالیتون.
FashiSt
کسی نیست جواب بده ؟
این آموزش متوقف شده ؟
حسین احمدی
سلام دوست عزیز، عذر خواهی میکنم، فراموش کردم جوابتون رو بدم، آموزش ادامه داره، اما در مورد PyCharm تو این دوره در موردش صحبتی نمیشه.
FashiSt
سلام و تشکر بابت جوابتون،
یعنی آموزش این دوره فقط مرتبط با کنسول هستش؟
پس برای ساخت برنامه های جانبی از چه دوره هایی میتونیم استفاده کنیم؟
میشه راهنمایی کنید ؟

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

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره بهاره می تونی امروز ارزونتر از فردا خرید کنی ....