تفاوت بین بازگشت و تکرار

فهرست مطالب:

تفاوت بین بازگشت و تکرار
تفاوت بین بازگشت و تکرار

تصویری: تفاوت بین بازگشت و تکرار

تصویری: تفاوت بین بازگشت و تکرار
تصویری: ترفند شگفت انگیز : دلتنگ کردن و بازگرداندن عشق سابق 2024, جولای
Anonim

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

Recursion و Iteration می توانند برای حل مشکلات برنامه نویسی استفاده شوند. رویکرد حل مسئله با استفاده از بازگشت یا تکرار بستگی به راه حل مسئله دارد. تفاوت اصلی بین بازگشت و تکرار این است که بازگشت مکانیزمی است برای فراخوانی یک تابع در یک تابع در حالی که تکرار عبارت است از اجرای مکرر مجموعه ای از دستورالعمل ها تا زمانی که شرط داده شده درست باشد. بازگشت و تکرار تکنیک‌های اصلی برای توسعه الگوریتم‌ها و ساخت برنامه‌های نرم‌افزاری هستند.

بازگشت چیست؟

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

بازگشت را می توان با استفاده از برنامه برای محاسبه فاکتوریل توضیح داد.

n!=n(n-1)!، اگر n>0

n!=1، اگر n=0;

برای محاسبه فاکتوریل 3(3!=321) به کد زیر مراجعه کنید.

intmain () {

int value=factorial (3);

printf("فاکتوریل %d\n است"، مقدار);

بازگشت 0;

}

infactorial (intn) {

if(n==0) {

بازگشت 1;

}

دیگر {

بازگشت n فاکتوریل(n-1);

}

}

هنگام فراخوانی فاکتوریل (3)، آن تابع فاکتوریل (2) را فراخوانی می کند. هنگام فراخوانی فاکتوریل (2)، آن تابع فاکتوریل (1) را فراخوانی می کند. سپس فاکتوریل (1) فاکتوریل (0) را صدا می کند. فاکتوریل (0) 1 را برمی‌گرداند. در برنامه بالا، شرط n==0 در «بلوک if» شرط پایه است.مطابق Likewise، تابع فاکتوریل بارها و بارها فراخوانی می شود.

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

تفاوت بین بازگشت و تکرار
تفاوت بین بازگشت و تکرار
تفاوت بین بازگشت و تکرار
تفاوت بین بازگشت و تکرار

شکل 01: بازگشت

در برنامه فوق، هنگام فراخوانی فاکتوریل (3) از اصلی، یک رکورد فعال سازی در پشته تماس ایجاد می کند. سپس، قاب پشته ای فاکتوریل (2) در بالای پشته ایجاد می شود و غیره. رکورد فعال سازی اطلاعات مربوط به متغیرهای محلی و غیره را نگه می دارد. هر بار که تابع فراخوانی می شود، مجموعه جدیدی از متغیرهای محلی در بالای پشته ایجاد می شود. این قاب های پشته ای می توانند سرعت افزایش را کاهش دهند. به همین ترتیب در بازگشت، یک تابع خود را فراخوانی می کند. پیچیدگی زمانی برای یک تابع بازگشتی با تعداد دفعات یافت می شود، تابع فراخوانی می شود. پیچیدگی زمانی برای یک فراخوانی تابع O(1) است. برای n تعداد تماس بازگشتی، پیچیدگی زمانی O(n) است.

تکرار چیست؟

تکرار بلوکی از دستورالعمل ها است که بارها و بارها تکرار می شود تا شرط داده شده درست باشد. تکرار را می توان با استفاده از "حلقه برای"، "حلقه do-while" یا "حلقه در حالی که" انجام داد. نحو "for loop" به شرح زیر است.

برای (آغازسازی؛ شرط؛ اصلاح) {

// بیانیه;

}

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

شکل 02: "برای نمودار جریان حلقه"

مرحله اولیه‌سازی ابتدا اجرا می‌شود. این مرحله عبارت است از اعلام و مقداردهی اولیه متغیرهای کنترل حلقه. اگر شرط درست باشد، دستورات داخل پرانتزهای فرفری اجرا می شوند. این عبارات تا زمانی اجرا می شوند که شرط درست باشد. اگر شرط نادرست باشد، کنترل به دستور بعدی بعد از حلقه for می رود. پس از اجرای دستورات داخل حلقه، کنترل به قسمت modify می رود. برای به روز رسانی متغیر کنترل حلقه است. سپس وضعیت دوباره بررسی می شود.اگر شرط درست باشد، دستورات داخل بریس های فرفری اجرا می شوند. به این ترتیب "حلقه for" تکرار می شود.

در "حلقه"، دستورات داخل حلقه تا زمانی اجرا می شوند که شرط درست باشد.

while (شرط){

// بیانیه

}

در حلقه "do-while"، شرط در انتهای حلقه بررسی می شود. بنابراین، حلقه حداقل یک بار اجرا می شود.

انجام{

// بیانیه

} while(شرایط)

برنامه برای یافتن فاکتوریل 3 (3!) با استفاده از تکرار ("برای حلقه") به شرح زیر است.

int main(){

intn=3، فاکتوریل=1;

inti;

for(i=1; i<=n; i++){

factorial=فاکتوریلi;

}

printf("فاکتوریل %d\n است"، فاکتوریل)؛

بازگشت 0;

}

شباهت های بین بازگشت و تکرار چیست؟

  • هر دو تکنیک برای حل یک مشکل هستند.
  • کار را می توان به صورت بازگشتی یا تکراری حل کرد.

تفاوت بین بازگشت و تکرار چیست؟

بازگشت در مقابل تکرار

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

خلاصه - بازگشت در مقابل تکرار

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

دانلود نسخه PDF Recursion vs Iteration

می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت نقل قول برای اهداف آفلاین از آن استفاده کنید. لطفاً نسخه PDF را از اینجا دانلود کنید تفاوت بین بازگشت و تکرار

توصیه شده: