نمایش نتایج 1 تا 4 از 4

نام تاپیک: این کد درباره توابع رو درک نمیکنم

  1. #1

    این کد درباره توابع رو درک نمیکنم

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

    def tri_recursion(k):
    if(k > 0):
    result = k + tri_recursion(k - 1)
    print(result)
    else:
    result = 0
    return result

    print("\n\nRecursion Example Results")
    tri_recursion(4)


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


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






    Recursion Example Results
    1
    3
    6
    10

    منبع این کد سایت w3school است


  2. #2

    نقل قول: این کد درباره توابع رو درک نمیکنم

    دو خط پایین که print یک پیغام میده وخط بعدی برای فراخوانی تابع هست که مقدار ۴ رو شما به آرگومانش دادید.
    پس حالا میریم تو تابع.
    مقدار ۴ میاد داخل آرگومان k قرار میگیره.
    پس حالا مقدار k=4 هست.
    خط بعدی تابع میاد بررسی میکنه ایا k بزرگتر از صفره که اینجا شرط برقراره.
    پس حالا میریم تو if.
    اولیلن خط if میگه بیا مقدار k (که مساوی ۴ است) رو با خروجی خود تابع که این دفعه آرگومانش یکی کم شده(k-1) جمع کن بریز تو result اما ما خروجی تابع رو نداریم یعنی باید بریم تو تابعی که آرگومانش شده ۳.
    حالا وارد این تابع شدیم باز شرط رو چک میکنه ایا ۳ که مقدار همون k هست بزرگتر از صفره بله شرط درسته.
    میره تو if .
    باز اولین خط if میگه بیا مقدار k (که مساوی ۳ هست) رو با خروجی تابعی که آرگومانش اینجا میشه ۲ جمع کن ما حالا خروجی تابع با ارگومان ۲ رو به دست بیاریم .
    هی همین طوری می ریم تو تابع هایی که توهم فراخوانی شدن. البته توجه کنییم که داره هی یکی از مقدار ارگومان کم میشه.
    زمانی که رسیدیم به ارگومان ۱ دیگه نمی ریم تو تابع چون مقدار k رو یک بگذاریم با ارگومان (k-1) مقدارش میشه صفر یعنی تابعی با ارگومان صفر که دیگه if بر قرار نیست چون(0<0) حالا else برقرار میشه که result=0 میشه حالا به جای تابع با ارگومان صفر عدد صفر بگذار و با ۱ جمع کن که result میشه ۱ حالا پرینت کن ۱ رو .
    تابع با ارگومان ۱ مقدار ۱ رو بر می گردونه مقدارش میاد به مرحله قبلی یعنی ۲ رو با ۱ جمع کن چاپش کن بفرس برا تابع مرحله قبلی که ارگومانش ۳ هست.
    هی همین طور ادامه پیدا میکنه تا تابعی با ارگومان ۴.
    اونجا هم تابع با ارگومان ۳ که مقدارش ۶ هست رو با ۴ جمع و در result قرار میدیم و بعد چاپش می کنیم.

    امیدوارم گم راه نکرده باشم.
    و توضیحاتم به دردتون بخوره.
    موفق باشید.

  3. #3

    نقل قول: این کد درباره توابع رو درک نمیکنم

    نقل قول نوشته شده توسط M0h@mm@d مشاهده تاپیک
    دو خط پایین که print یک پیغام میده وخط بعدی برای فراخوانی تابع هست که مقدار ۴ رو شما به آرگومانش دادید.
    پس حالا میریم تو تابع.
    مقدار ۴ میاد داخل آرگومان k قرار میگیره.
    پس حالا مقدار k=4 هست.
    خط بعدی تابع میاد بررسی میکنه ایا k بزرگتر از صفره که اینجا شرط برقراره.
    پس حالا میریم تو if.
    اولیلن خط if میگه بیا مقدار k (که مساوی ۴ است) رو با خروجی خود تابع که این دفعه آرگومانش یکی کم شده(k-1) جمع کن بریز تو result اما ما خروجی تابع رو نداریم یعنی باید بریم تو تابعی که آرگومانش شده ۳.
    حالا وارد این تابع شدیم باز شرط رو چک میکنه ایا ۳ که مقدار همون k هست بزرگتر از صفره بله شرط درسته.
    میره تو if .
    باز اولین خط if میگه بیا مقدار k (که مساوی ۳ هست) رو با خروجی تابعی که آرگومانش اینجا میشه ۲ جمع کن ما حالا خروجی تابع با ارگومان ۲ رو به دست بیاریم .
    هی همین طوری می ریم تو تابع هایی که توهم فراخوانی شدن. البته توجه کنییم که داره هی یکی از مقدار ارگومان کم میشه.
    زمانی که رسیدیم به ارگومان ۱ دیگه نمی ریم تو تابع چون مقدار k رو یک بگذاریم با ارگومان (k-1) مقدارش میشه صفر یعنی تابعی با ارگومان صفر که دیگه if بر قرار نیست چون(0<0) حالا else برقرار میشه که result=0 میشه حالا به جای تابع با ارگومان صفر عدد صفر بگذار و با ۱ جمع کن که result میشه ۱ حالا پرینت کن ۱ رو .
    تابع با ارگومان ۱ مقدار ۱ رو بر می گردونه مقدارش میاد به مرحله قبلی یعنی ۲ رو با ۱ جمع کن چاپش کن بفرس برا تابع مرحله قبلی که ارگومانش ۳ هست.
    هی همین طور ادامه پیدا میکنه تا تابعی با ارگومان ۴.
    اونجا هم تابع با ارگومان ۳ که مقدارش ۶ هست رو با ۴ جمع و در result قرار میدیم و بعد چاپش می کنیم.

    امیدوارم گم راه نکرده باشم.
    و توضیحاتم به دردتون بخوره.
    موفق باشید.



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

  4. #4

    نقل قول: این کد درباره توابع رو درک نمیکنم

    خیلی عالی بود منم خوشم اومد از توضیحاتتون

تاپیک های مشابه

  1. پاسخ: 0
    آخرین پست: شنبه 28 مرداد 1391, 15:32 عصر
  2. سوال: خروجی توابع جاوا اسکریپت (توابع تودرتو)
    نوشته شده توسط abpsoft در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 6
    آخرین پست: یک شنبه 15 خرداد 1390, 16:51 عصر
  3. سوال: چگونه می توان وقتی focusروی texboxقرار می گیردبتوان فارسی تایپ کرد
    نوشته شده توسط assimar42 در بخش JavaScript و Framework های مبتنی بر آن
    پاسخ: 5
    آخرین پست: جمعه 29 بهمن 1389, 23:49 عصر
  4. چگونه مي توان محتواي يك فيلد جدول را با توجه به اطلاعات وارده در تكس باكس روي يك ليبل نشان دهد؟
    نوشته شده توسط reshehri در بخش مطالب مرتبط با بانکهای اطلاعاتی در VB6
    پاسخ: 1
    آخرین پست: یک شنبه 10 بهمن 1389, 18:19 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •