نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: تابع بازگشتی

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1


    آخرین بازدید
    2021/12/05
    تاریخ عضویت
    February 2010
    محل سکونت
    بوشهر
    نوشته ها
    940
    امتیاز
    718
    سپاس
    29
    سپاس شده
    863 در 365 پست
    تعیین سطح نشده است

    shamsololama به Yahoo ارسال پیام

    تابع بازگشتی

    با درود فراوان

    در موضوع توضیاتی در مورد تابع بازگشتی و همچنین مثالهای بزنیم دوستانی که در این مورد اطلاعاتی دارند نیز اطلاعات خودشون را در اختیار دیگر دوستان قرار بدهند

    تابع باز گشتی بصورت کلی توابعی است که این تابع خودش را بصورت مستقیم یا غیر مستقیم فرار خوانی میکنند


    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.

  2. #2


    آخرین بازدید
    2022/06/28
    تاریخ عضویت
    May 2010
    محل سکونت
    بلژیک
    نوشته ها
    174
    امتیاز
    108
    سپاس
    0
    سپاس شده
    119 در 53 پست
    تعیین سطح نشده است

    RE: تابع بازگشتی

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

    [size=large]چه موقع از تابع بازگشتی استفاده نکنیم!؟
    [/size]

    این قسمت مطلب ممکنه فقط به درد دوستانی بخوره که بیشتر با این توابع در سطح حرفه ای سر و کار دارند.

    مشکلی که توابع بازگشتی دارند، این هست که متغیر های local و مورد استفاده در تابع بعلاوه آدرس خود تابع در stack table ذخیره میشوند. در این صورت با فراخوانی هر بار تابع بازگشتی به صورت عمقی اطلاعاتی (نسبتا زیاد) در stack ذخیره شده و تا زمانی که تابع به انتها نرسیده و برنگردد در آنجا می ماند. فضای موجود برای ذخیره ی این انباشته اطلاعات محدود است و بنابراین عمق توابع بازگشتی نیز محدود است. ما نمی توانید توابع بازگشتی بنویسیم که عمق بالایی دارند. این مساله برای توابعی که میزان متغیر local بیشتری دارند؛ خیلی زیاد محسوس است. اما مثال زیر نشان دهنده این است که توابع بازگشتی با تعداد متغیر اندک نیز دارای مشکلاتی هستند. توالی فراخوانی توابع در Call Hierarchy نوشته می شود که درواقع نشاندهنده عمق برنامه است.

    مثال: این کد را ببینید
    Private Sub CommandButton1_Click()
    Dim sa As Integer
    sa = ab(1)
    End Sub


    Public Function ab(ByVal a As Integer)
    If a < 1000 Then
    a = ab(a + a)
    ab = a
    End If
    End Function

    کد بالا به صورت خیلی معمول انجام شده زیرا عمق تابع کم است.
    اما در صورتی که If a < 1000 Then را به If a < 100000 Then تغییر دهید. عمق تابع افزایش یافته و با stack overflow مواجه می شوید.

    برای این مشکل چه پشنهادی دارید؟ (البته من یک راه پیشنهادی برای حل این مشکل در آینده خواهم نوشت)

    مشکل دومی که به توابع بازگشتی وارد می شود. سرعت پایین این توابع است.
    تصور کنید تعداد زیادی متغیر لوکال دارید (چه در این تابع و چه در توابع دیگر)، در صورت استفاده از این نوع توابع، cpu در هر مرحله رفتن به عمق یا بازگشتن به سطح بالایی باید تمام متغیر های کنونی را در stack ذخیره کرده و متغیر های دیگری که قرار است مورد استفاده قرار گیرند و در stack هستند را بازگردانی نماید. این عمل زمانبر است و بهینه نیست.

    برای این مشکل هم راه حل هایی وجود دارد که من این قسمت رو باز میگذارم تا دوستان نظر بدهند.



    اما مزایای توابع بازگشتی:

    1- خیلی راحت و ساده قابل پیاده سازی است.
    2- در مواردی که نیاز به سرعت بالا و عمق زیاد نیست خیلی خوب عمل می کند.
    3- (فقط دوستانی که بهینه سازی کار می کنند) از این نوع توابع برای مبحث برنامه ریزی پویا استفاده وسیعی میشود. (فقط در صورتی که مشکلات بالا وجود نداشته باشد.)


    موفق و پیروز باشید.

  3. سپاس ها (1)



اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. دفترچه تلفن با امکان جستجو بر اساس چند فیلد و قسمتی از متن
    توسط jamalm در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 1
    آخرين نوشته: 2017/07/19, 21:40
  2. چگونگی ذخیره اطلاعات در بانک اطلاعاتی در اکسل
    توسط mohsen21571 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 8
    آخرين نوشته: 2014/09/23, 11:14
  3. marge نمودن دو با نک اطلاعاتی
    توسط namdarih در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 4
    آخرين نوشته: 2012/09/09, 21:43
  4. تابع محاسبه اقساط مبلغ آتی
    توسط mrmr در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 2
    آخرين نوشته: 2011/12/07, 22:35
  5. یک از ایراداتی که به اکسل وار مینمایند
    توسط excel در انجمن تالار آموزش اکسل
    پاسخ ها: 0
    آخرين نوشته: 2010/03/03, 12:17

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

ثبت فراخوانی تابع بازگشتی با پشته

فرمول بازگشتی در اکسل

توابع بازگشتی در اکسل

توابع بازگشتی

توابع بازگشتی در vb

نحوه نوشتم فرمول بازگشتی برنامه ریزی پویا

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

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

تشخیص رابطه بازگشتی در اکسل

تابع بازگشتی در اکسلconcatenate

الگوریتم های بازگشتی در Vba

فرمول بازگشتی اکسل

فرم تابع بازگشتی در پشته

ذخیره ی تابع بازگشتی در استک

مثال الگوریتم بازگشتی در جاوا

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

برنامه های غیر بازگشتی ویژوال بیسیک

مثال برای تابع بازگشتی و غیر بازگشتی

ايرادات توابع بازگشتي

طریقه پشته سیستم برای توابع بازگشتی

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

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد