موضوع مقاله: ایتریشن | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ایتریشن | مقدمه: هر بارِ اجرای فرآیند یک ایتریشن مستقل محسوب می‌شود و نتیجهٔ هر ایتریشن، نقطهٔ آغاز ایتریشن بعدی است. | ## بخش 1: ایتریشن | در ریاضیات و علوم رایانه، ایتریشن (همراه با روش مکمل خود، یعنی بازگشت) پایه‌ای استاندارد برای الگوریتم‌ها است. در ریاضیات یکی از معانی تکرار در ریاضیات، فرایند تکرار یک تابع است؛ یعنی اعمال یک تابع به‌طور مکرر، با استفاده از خروجی یک تکرار به عنوان ورودی به بعدی اشاره داشته باشد. تکرار کردن تابعی که به ظاهر ساده است، می‌تواند باعث ایجاد رفتارهایی پیچیده و مسائلی دشوار شود. معنای دیگر تکرار در ریاضیات، روش‌های تکرارپذیر است که برای به دست آوردن پاسخ عددیِ تقریبی برای برخی از مسائل ریاضی استفاده می‌شوند. محاسبهٔ دستی ریشهٔ دوم (جذر) اعداد نیز یک مثال معروف از روش‌های تکرارپذیر است که مورد استفاده متداول قرار دارد. در رایانش (محاسبه) منظور از ایتریشن در رایانش، شگردی برای اجرای چندبارهٔ –با تعداد مشخص– یک دسته از دستورهای درونِ برنامه است. متخصصان علوم رایانه ممکن است که با نام «یک ایتریشن» از خود این دسته از دستورها نیز یاد کنند. این کار، ایرادی ندارد و حتی اغلب ضروری است که از مقادیر مورد استفاده در سایر قسمت‌های برنامه، درون قسمت بین آکولاد استفاده کرد تا عملکرد مورد نظر حاصل شود. | ## بخش 2: ایتریشن | ارتباط با بازگشت هنگام انتخاب الگوریتم، بازگشت و تکرار را می‌توان با تأثیرگذاری یکسانی به کار برد. تفاوت اصلی این است که برای استفاده از الگوریتم‌های مبتنی بر تکرار، لازم است که بدانیم چندبار لازم است تا فرایند را تکرار کنیم؛ بنابراین یک دانش پیشین برای تعداد دفعات تکرار، مورد نیاز است. در حالی که می‌توان از الگوریتم بازگشتی بدون داشتن دانش پیشینی در مورد تعداد دفعات مورد نیاز برای اجرای الگوریتم، استفاده کرد. دسته‌ای خاص از زبان‌های برنامه‌نویسی که به زبان‌های برنامه‌نویسی تابعی معروف هستند، به گونه‌ای طراحی شده‌اند که امکان تکرار صریح مجموعه‌ای از دستور را در قالبی مانند حلقه for فراهم نمی‌کنند. در عوض، این دسته از زبان‌های برنامه‌نویسی تنها و تنها از بازگشت استفاده می‌کنند. به جای فراخوانی یک بلوک کد برای تکرار با تعداد بارهای از پیش تعریف شده، بلوک کد اجرایی فعالیت دلخواه ما را را به تعدادی ریزفعالیت کوچکتر و مستقل می‌شکند، پس از آن بلوک کد روی هر ریزفعالیت اجرا می‌شود. هر ریزفعالیت به‌طور مکرر شکسته خواهد شد تا زمانی که «حجم» ریزفعالیت به اندازه‌ای کوچک شود که الگوریتم بتواند آن را خیلی سریع انجام دهد. سپس، الگوریتم به عقب برمی‌گردد و نتیجهٔ ریزفعالیت‌ها را در کنار یکدیگر قرار می‌دهد تا نتیجهٔ فعالیت اصلی را به دست آورد. | ## بخش 3: ایتریشن | برای مثال، می‌توان به مرتب‌سازی ادغامی اشاره کرد که یکی از الگوریتم‌های مرتب‌سازی لیست است. الگوریتم بازگشتی مرتب‌سازی ادغامی در ابتدا لیست را به جفت‌های متوالی تقسیم می‌کند و این کار را آن قدر انجام می‌دهد تا جفت‌های متوالی قابل تقسیم نباشند. سپس هر جفت مرتب می‌شود، سپس هر دو جفت متوالی را مرتب می‌کند و به یکدیگر می‌چسباند و همین‌طور ادامه می‌دهد تا زمانی که عناصر لیست به ترتیب دلخواه برسند. کد زیر مثالی از الگوریتم بازگشتی است که با زبان برنامه‌نویسی اسکیم نوشته شده‌است. بدین ترتیب، سبب صرفه‌جویی در زمان و توان برنامه‌نویس در کدنویسی‌های بعدی خواهد شد. به‌طور خاص، ایتریتور به فرد این امکان را می‌دهد که عملیاتی یکسان را در هر عضو از داده‌ساختار تکرار کند. آموزش در برخی از دانشگاه‌های علوم تربیتی، از تکرار برای اشاره به این فرایند استفاده می‌شود: «آموزش‌دادن یا راهنمایی‌کردن دانش‌آموزان برای این که آزمایش‌ها، تمرین‌ها یا پروژه‌های خود را تا هنگام رسیدن به نتایج دقیق یا تسلط به یک مهارت فنی، تکرار کنند». | ## جمع‌بندی | به‌طور خاص، تکرارپذیر بدین صورت تعریف می‌شود: «فرایندی برای یادگیری و رشد شامل کارهای متناوب: پرس‌وجو، فراهم کردن فرصت‌های کافی برای افراد به منظور بررسی مجدد طرح‌های خود، تفکر کردن نقادانه در باب پیامدهای آن.» برخلاف رایانش و ریاضیات، تعداد دفعات تکرار از پیش معلوم نیست و تکرار تا زمانی که موفقیت بر اساس معیارهای استاندارد (معمولاً یک آزمون) حاصل شود، ادامه می‌یابد.