جاوا

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

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

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

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

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

کد زیرمعکوس سازی عناصر آرایه را به روش بازگشتی پیاده سازی کرده است. کد را اجرا کنید و با تغییر عناصر و اندازه آرایه (متغیر array) ، آن را آزمایش کنید تا ببینید که چگونه پاسخ تغییر می کند.
import java.io.*;

class ExampleClass { 

  private static void invert(int[] array, int currentIndex) {
    if (currentIndex < array.length/2) {
      // swap array[currentIndex] and array[array.length-1-currentIndex]
      int temp = array[currentIndex];
      array[currentIndex] = array[array.length-1-currentIndex];
      array[array.length-1-currentIndex] = temp;
      
      invert(array, currentIndex+1);
    }
  }
  
  public static void main(String[] args) {
    System.out.println("Before: ");
    
    int[] array = {1,2,3,4,5,6,7};
    System.out.print("{ ");
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
    System.out.println("} ");
    
    System.out.println("After: ");
    
    invert(array, 0);
    
    System.out.print("{ ");
    for (int i = 0; i < array.length; i++) {
      System.out.print(array[i] + " ");
    }
    System.out.print("} ");
  }
}
import java.io.*;

class sample {
  
  private static void invert(int[] arr) {
    int s = arr.length/2;
    int tmp = arr.length-1;
    int tmp2 = 0;
    for (int i=0; i<s; i++) {
      tmp2 = arr[i];
      arr[i] = arr[tmp];
      arr[tmp] = tmp2;
      tmp = tmp - 1;
    }
  }
  
  public static void main(String[] args) {
    System.out.println("Hello world");
    
    int[] a = {5,4,3,2,1,0};
    System.out.print("{ ");
    for (int i = 0; i < a.length; i++) {
      System.out.print(a[i] + ", ");
    }
    System.out.print("} ");
    
    System.out.println(" ");
    
    invert(a);
    
    System.out.print("{ ");
    for (int i = 0; i < a.length; i++) {
      System.out.print(a[i] + ", ");
    }
    System.out.print("} ");
    
  }
}

تفسیر کد

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

متد main

  • کد main بین خطوط ۱۷ و خط ۳۴ است.
  • در کد main، ما یک آرایه به طول ۷ داریم.
  • متد بازگشتی با ۲ آرگومان در main فراخوانی می شود: array و ۰ (مقدار شاخص آرایه برای شروع).
  • آرایه در زمان اتمام اجرای متد کاملاً معکوس می شود.
  • آرایه با استفاده از حلقه for چاپ می شود.

متد بازگشتی

در این متد ما حالت پایه و حالت بازگشتی را تعریف می کنیم:

حالت پایه

این متد با برآورده شدن شرایط زیر خاتمه می یابد:
  • اگر مقدار currentIndex مساوی یا بیشتر از نصف اندازه آرایه باشد ، متد خاتمه می یابد. در غیر این صورت ، کدی را که در ادامه توضیح داده می شود اجرا می کند و در نهایت متد بازگشتی را فراخوانی می کند.

حالت بازگشتی

متد بازگشتی در خط ۱۲ فراخوانی می شود.
  • این متد دو آرگمان دریافت می کند. اولین آرگمان آرایه (array) است. مورد دوم ، currentIndex است که شاخص شروع آرایه است. در هر فراخوانی بازگشتی متوالی ، currentIndex بروز شده و یک واحد افزایش می یابد.
  • قبل از فراخوانی بازگشتی بعدی ، مقادیر آخرین مکان و اولین مکان آرایه را جابجا می کنیم و برای اینکه بتوانیم در آرایه جلو برویم ، مقدار currentIndex را برای فراخوانی بعدی افزایش می دهیم.
  • در ابتدا مقدار currentIndex صفر است و عنصر array[0] با عنصر array[7-1-0] تعویض می شود ، برای بدست آوردن شاخص دوم عدد ۱ و currentIndex را از اندازه آرایه کم می کنیم. سپس متد بازگشتی معکوس کننده دوباره فراخوانی می شود.
  • در هر فراخوانی بازگشتی ،
  • از خط ۸ تا خط ۱۰ ، مقادیر آرایه با استفاده از فرآیند توضیح داده شده در بالا جابجا می شوند.
  • برای به روزرسانی مقدار شاخص و تعویض مقادیر آرایه در این شاخص ها در فراخوانی بازگشتی بعدی ، مقدار currentIndex یک واحد افزایش می یابد.
  • این متد به طور مداوم به شیوه بازگشتی و تا زمان تحقق شرط پایه فراخوانی می شود.

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

در تصاویر زیر مفهوم توضیح داده شده است:

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

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

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

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

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