جاوا

جلسه ۶۵: یافتن اولین رخداد یک عدد در آرایه به روش بازگشتی در جاوا

در این جلسه می آموزید که چگونه اولین رخداد یک عدد را به روش بازگشتی در یک آرایه پیدا کنید. موارد زیر را بیان خواهیم کرد:

  • اولین رخداد یک عدد در آرایه
  • پیاده سازی به وسیله کد
  • تفسیر کد
  • متد main
  • متد بازگشتی
  • حالت پایه
  • حالت بازگشتی
  • درک از طریق پشته

اولین رخداد یک عدد در آرایه

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

پیاده سازی به وسیله کد

در کد زیر به روش بازگشتی اولین رخداد یک عدد در یک آرایه ، جستجو می شود. کد را اجرا کنید و با تغییر مقدار متغیرهای array و num و بررسی خروجی برنامه ، صحت عملکرد کد را بررسی کنید.

class ArrayClass {

  private static int firstOccurrence(int[] a, int n, int currentIndex) {
    if (a.length == currentIndex) {
      return -1;
    }
    else if (a[currentIndex] == n) {
        return currentIndex;
    }
    else {
        return firstOccurrence(a, n, currentIndex+1);
    }
  }
  
  public static void main(String[] args) {
    System.out.print("{");
    
    int[] array = {2,3,4,1,7,8,3};
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
    System.out.println("}");
    
    int num = 3;

    int result = firstOccurrence(array, num, 0);
    System.out.println("The first occurrence of the number " + num + " is at index: " + result);
  }
}

تفسیر کد

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

متد main

کد داخل main از خط ۱۶ تا خط ۲۷ دیده می شود.

  • در خطوط ۱۸ تا ۲۴ آرایه array به طول ۷ و متغیر num که آن را در آرایه array جستجو خواهیم کرد می بینید.
  • در خط ۲۶ متد firstOccurence با سه آرگومان array ، num و ۰ (یعنی اولین شاخص) فراخوانی شده است. وقتی متد فراخوانی می شود ، شاخص اولین رخداد num در آرایه را برمی گرداند.

متد بازگشتی

در متد بازگشتی ، حالت پایه و حالت بازگشتی وجود دارد.

حالت پایه

متد بازگشتی در صورت تحقق یکی از شرایط زیر خاتمه می یابد:

  • اولین حالت پایه از خط ۴ تا خط ۶ تعریف شده است. اگر کل آرایه پیموده شده باشد و عنصر پیدا نشود ، متد ۱- را برمی گرداند.
  • حالت پایه دوم از خط ۷ تا خط ۹ تعریف می شود. اگر اولین رخداد عدد پیدا شود ، شاخص آن عدد بازگردانده می شود.

حالت بازگشتی

حالت بازگشتی در خط ۱۱ فراخوانی می شود.

  • این متد بازگشتی سه آرگمان دریافت می کند. اولین آرگمان آرایه a است. دومین آرگمان عدد n است که قرار است اولین رخداد آن پیدا شود. آرگومان سوم ، currentIndex یا شاخص فعلی است که مکان جستجو را مشخص می کند و در فراخوانی های بازگشتی پی در پی افزایش می یابد.
  • در ابتدا ، مقدار currentIndex صفر است. هر بار که متد بازگشتی فراخوانی می شود ، عنصر قرار گرفته در مکان currentIndex از آرایه با n مقایسه می شود. اگر نتیجه مقایسه درست باشد یعنی اعداد برابر باشند ، متد خاتمه یافته و شاخص currentIndex را برمی گرداند. اگر نتیجه مقایسه نادرست باشد یعنی اعداد برابر نباشند ، متد currentIndex را افزایش می دهد تا در فراخوانی بعدی n با مقدار ذخیره شده در شاخص بعدی آرایه مقایسه شود. . تا زمانی که به یکی از دو حالت پایه نرسیم فراخوانی های بازگشتی و مقایسه ها ادامه پیدا می کند.

درک از طریق پشته

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

در جلسه بعدی ، تعداد تکرار یک عدد خاص را در یک آرایه مشخص تعیین خواهیم کرد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا