تکرار به فرآیند اجرای دوباره یک دستور یا مجموعه دستورات گفته میشود. این واژه بیشتر در کنار حلقهها استفاده میشود.
Recursive Function به تابعی گفته میشود که خود را فراخوانی میکند. این نوع توابع برای حل مسائلی که بهطور طبیعی به صورت بازگشتی تعریف میشوند، بسیار مفید هستند. توابع بازگشتی معمولاً برای حل مشکلاتی که به زیرمسائل مشابه تقسیم میشوند، مانند محاسبه فاکتوریل، سری فیبوناچی، یا جستجو در درختها و گرافها، استفاده میشوند.
یک تابع بازگشتی معمولاً از دو بخش اصلی تشکیل شده است:
بهعنوان مثال، یکی از معروفترین توابع بازگشتی، تابع محاسبه فاکتوریل است. فاکتوریل یک عدد طبیعی n (که با n! نشان داده میشود) به صورت ضرب همه اعداد مثبت کمتر از یا برابر با n تعریف میشود. در اینجا یک پیادهسازی بازگشتی از تابع فاکتوریل در زبان C آورده شده است:
#include <stdio.h> // تعریف تابع بازگشتی برای محاسبه فاکتوریل int factorial(int n) {
if (n == 0) {
return 1; // شرط پایه: فاکتوریل 0 برابر با 1 است
} else {
return n * factorial(n - 1); // بازگشت: فراخوانی مجدد تابع
} } int main() {
int result = factorial(5); // فراخوانی تابع
printf("Factorial of 5 is: %d\n", result); // خروجی: 120
return 0; } در این مثال، تابع factorial خود را برای مقادیر کوچکتر از n فراخوانی میکند تا زمانی که به شرط پایه برسد، یعنی وقتی که n = 0 باشد. در این حالت، مقدار 1 باز میگردد.
در زبان Python نیز تعریف توابع بازگشتی مشابه است. بهعنوان مثال، میتوان تابعی برای محاسبه فاکتوریل به صورت بازگشتی به این شکل نوشت:
# تعریف تابع بازگشتی برای محاسبه فاکتوریل def factorial(n):
if n == 0:
return 1 # شرط پایه
else:
return n * factorial(n - 1) # بازگشت print(factorial(5)) # خروجی: 120 در اینجا نیز تابع factorial با فراخوانی خود برای مقادیر کوچکتر از n، فاکتوریل عدد را محاسبه میکند.
توابع بازگشتی به دلیل سادگی در کدنویسی و مدلسازی مسائل پیچیده بسیار محبوب هستند، اما باید مراقب بود که همیشه یک شرط پایه وجود داشته باشد. اگر شرط پایه به درستی تعریف نشود یا فراموش شود، تابع وارد یک حلقه بازگشتی بیپایان شده و ممکن است منجر به بروز خطای "Stack Overflow" شود.
بهطور کلی، استفاده از توابع بازگشتی در الگوریتمها و برنامهنویسی بهویژه برای حل مسائل ترکیبیاتی و جستجو بسیار مفید است. برای یادگیری بیشتر مفاهیم مشابه، میتوانید از سایت saeidsafaei.ir و مقالات محمد سعید صفایی استفاده کنید.
در این مبحث، به بررسی انواع توابع، شامل توابع کتابخانهای و توابع ساخت کاربر پرداخته میشود و نحوه اعلان، تعریف و استفاده از آنها مورد بحث قرار میگیرد. همچنین، به مفاهیم متغیرهای محلی و توابع محلی، تفاوت آرگومان و پارامتر و نحوه عملکرد تابع اصلی پرداخته خواهد شد. هدف این جلسه، آشنایی با نحوه استفاده از توابع در برنامهنویسی و درک دقیق ارتباطات میان متغیرها و توابع است.
تکرار به فرآیند اجرای دوباره یک دستور یا مجموعه دستورات گفته میشود. این واژه بیشتر در کنار حلقهها استفاده میشود.
دسترسی به عناصر آرایه به معنای استفاده از اندیسها برای دستیابی به مقادیر ذخیرهشده در خانههای مختلف آرایه است.
عدد مورد استفاده توسط روترها برای تعیین اعتبار و اولویت مسیرهای مختلف که از پروتکلهای مختلف به مقصدهای یکسان ارسال میشود.
سیستمهای پرواز خودران به هواپیماها و وسایل پرنده اطلاق میشود که قادر به انجام عملیات پروازی بهطور خودکار هستند.
بستهای است که اطلاعات توپولوژی شبکه را در پروتکلهای مسیریابی Link State ارسال میکند.
رسانههایی که سیگنالها بدون نیاز به مسیر فیزیکی منتقل میشوند، مانند امواج رادیویی و مایکروویو.
نوعی سیستم که اطلاعات کامل از جزئیات عملکرد آن در دسترس است و به کاربر اجازه میدهد تا عملکرد درونی آن را بررسی و تحلیل کند.
نگهداری پیشبینی به استفاده از دادهها و الگوریتمها برای پیشبینی زمانبندی تعمیرات و پیشگیری از خرابیهای احتمالی اشاره دارد.
محدوده فرکانسهای سیگنالهای آنالوگ که در یک کانال ارتباطی منتقل میشوند.
الگوریتمهای یادگیری تقویتی به مدلهایی اطلاق میشود که از تجربیات گذشته برای بهبود تصمیمگیریها در آینده استفاده میکنند.
سوییچهایی که در لایه 2 مدل OSI کار میکنند و برای هدایت بستهها از آدرسهای MAC استفاده میکنند.
واقعیت مجازی (VR) تجربهای است که در آن کاربر به طور کامل در یک محیط دیجیتال غوطهور میشود.
ارجاع به نوعی متغیر اشاره دارد که به یک شیء یا متغیر اصلی اشاره میکند. برخلاف اشارهگرها، ارجاعها در زمان کامپایل به محل اصلی اشاره میکنند.
اطلاعات خامی که وارد کامپیوتر میشود تا پردازشی روی آن صورت گیرد. دادهها پس از پردازش به صورت اطلاعات ذخیره یا در خروجی نمایش داده میشوند.
محدوده به بخشهایی از کد اطلاق میشود که در آنها یک متغیر یا تابع قابل دسترسی است.
وسایل نقلیه خودران به خودروهایی اطلاق میشود که قادر به حرکت بدون نیاز به راننده انسان هستند و از فناوریهای پیشرفته برای تشخیص و تصمیمگیری استفاده میکنند.
سیستمهای تحویل خودران به وسایل نقلیه و رباتهایی اطلاق میشود که بهطور خودکار کالاها را به مقصد ارسال میکنند.
عدد به مجموعهای از ارقام گفته میشود که با توجه به موقعیت آنها در سیستم عددی، مقدار مشخصی دارند.
محاسبات بیولوژیکی به استفاده از فرآیندهای زیستی برای پردازش دادهها و ذخیرهسازی اطلاعات اشاره دارد.
پردازش سیگنال دیجیتال (DSP) به استفاده از الگوریتمها برای تجزیه و تحلیل و پردازش سیگنالهای دیجیتال برای کاربردهای مختلف اطلاق میشود.
اعلان تابع فرآیند اعلام نام و نوع تابع است که در آن نوع داده بازگشتی و نام پارامترها مشخص میشود، اما بدنه آن در این مرحله تعریف نمیشود.
شبکههای هوشمند به سیستمهای برقرسانی گفته میشود که از فناوریهای دیجیتال برای نظارت و بهینهسازی مصرف انرژی استفاده میکنند.
سیستمهای یادگیری تطبیقی به سیستمهایی اطلاق میشود که بهطور مداوم از تجربیات جدید برای بهبود عملکرد خود یاد میگیرند.
حلقه while به طور مکرر یک دستور را اجرا میکند تا زمانی که شرط خاصی برقرار باشد. این حلقه برای مواقعی که تعداد تکرار مشخص نیست، مناسب است.
سمانتیک به معنای بررسی معنای دستورات و کدها در یک زبان برنامهنویسی است. این بخش تعیین میکند که آیا کد نوشته شده به درستی به وظایف خود عمل میکند یا خیر.
پردازش زبان طبیعی (NLP) به استفاده از الگوریتمهای هوش مصنوعی برای تحلیل و درک زبانهای انسانی اشاره دارد.
دروازه منطقی NOT که عملیات معکوس را انجام میدهد و ورودی 1 را به 0 و ورودی 0 را به 1 تبدیل میکند.
واحد کنترل است که مسئول هدایت و کنترل سایر بخشهای پردازنده است و عملیاتها را طبق دستورالعملها انجام میدهد.
ساختار شبکهای که با استفاده از STP و BPDU ها به سوئیچها کمک میکند تا یک توپولوژی بدون حلقه ایجاد کنند.
روندی است که ورودیها را به خروجیها تبدیل میکند. این فرآیند میتواند شامل محاسبات، پردازش دادهها یا انجام کارهای خاص باشد.
این تکنیک در علم داده و تحلیل دادهها به معنای جمعآوری و تجزیه و تحلیل دادهها به گونهای است که از انتشار اطلاعات شخصی جلوگیری شود و همزمان از دادهها برای استخراج الگوهای عمومی استفاده شود.
جدولی که برای تبدیل اعداد از یک سیستم عددی به سیستم عددی دیگر استفاده میشود، مانند تبدیل از مبنای دو به هشت یا شانزده.
مدلسازی سهبعدی به فرآیند ایجاد مدلهای دیجیتالی از اشیاء یا محیطها با استفاده از نرمافزارهای کامپیوتری اطلاق میشود.
کامپیوترهایی هستند که منابع یا خدمات خاصی را در یک شبکه به دیگر سیستمها ارائه میدهند.
پایان به آخرین مرحله در الگوریتم گفته میشود که پس از آن هیچ پردازش یا محاسبات بیشتری انجام نمیشود.