نکته :: آموزش زبان پایتون :: قسمت هجدهم - توابع بازگشتی (Recursive Functions)
درخواست های ارتباط
جستجو
لیست دوستان من
صندوق پیام
همه را دیدم
  • در حال دریافت لیست پیام ها
صندوق پیام
رویدادها
همه را دیدم
  • در حال دریافت لیست رویدادها
همه رویدادهای من

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

صدور مدرک تنها برای دوره هایی که به صورت کامل خریداری شده و قیمت آن ها بالای 100،000 تومان باشد انجام خواهد شد.

جشنواره تخفیف شگفت انگیز زمستانه توسینسو

تا سقف 70 درصد تخفیف + ترافیک نیم بها + پشتیبانی محصولات توسط اساتید + ارائه گواهینامه پایان دوره

تخفیف های وب سایت
همه تخفیف ها

عضویت در

کانال تلگرام

توسینسو

اطلاعات مطلب
مدرس/نویسنده
حسین احمدی
امتیاز: 213993
رتبه:3
342
258
412
2787
حسین احمدی ، بنیانگذار TOSINSO ، توسعه دهنده وب و برنامه نویس ، بیش از 12 سال سابقه فعالیت حرفه ای در سطح کلان ، مشاور ، مدیر پروژه و مدرس نهادهای مالی و اعتباری ، تخصص در پلتفرم دات نت و زبان سی شارپ ، طراحی و توسعه وب ، امنیت نرم افزار ، تحلیل سیستم های اطلاعاتی و داده کاوی ... پروفایل کاربر

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

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

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

نویسنده: حسین احمدی
منبع: جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
برچسب ها
ردیف عنوان
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# رو تا حدودی با برنامه های تحت ویندوز اپلیکیشن کار کردم.
    خیلی ممنون میشم راهنمایی برفمایید.
  • شما اگر قصد یادگیری پایتون دارید مطالعه کنید مطالب رو. چون در هر صورت باید مقدمات پایتون رو یاد بگیرید و این سری برای آشنایی با مفدمات مناسب هست.
  • خیلی ممنون از پاسخ و آموزشتون.
  • سلام، خسته نباشید!
    ببخشید در پایان قسمت هجدهم یا قسمت اخر نوشتین در قسمت بعد ماژول ها تدریس خواهد شد!
    اما اصلا قسمتی به این عنوان نیست!
    چیکار باد بکنم؟
    ممنون

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