কম্পিউটার টিউটোরিয়াল

জাভাতে রিকার্সন এবং ইটারেশনের পার্থক্য কী?


রিকার্সন এবং ইটারেশন উভয়ই ইনস্ট্রাকশন সেটকে বারবার এক্সিকিউট করে। রিকার্সন হলো যখন একটি ফাংশনের ভিতরে একটি স্টেটমেন্ট নিজে নিজেকে বারবার কল করে। ইটারেশন হলো যখন একটি লুপ নियন্ত্রণকারী কন্ডিশন false হওয়া পর্যন্ত বারবার এক্সিকিউট হয়। রিকার্সন এবং ইটারেশনের প্রাথমিক পার্থক্য হলো রিকার্সন একটি প্রসেস যা সবসময় একটি ফাংশনে প্রয়োগ করা হয় এবং ইটারেশন প্রয়োগ করা হয় ইনস্ট্রাকশন সেটে যেগুলো আমরা বারবার এক্সিকিউট করতে চাই।

রিকার্সন

  • রিকার্সন সিলেকশন স্ট্রাকচার ব্যবহার করে।
  • যদি রিকার্সন স্টেপটি প্রোব্লেমটি এমনভাবে রিডিউস না করে যা কোনো কন্ডিশনে (বেস কেস) কনভার্জ করে, তবে অনন্ত রিকার্সন হয় এবং সিস্টেম ক্র্যাশ করতে পারে।
  • রিকার্সন টার্মিনেট হয় যখন একটি বেস কেস চিনতে পায়।
  • স্ট্যাক মেইনটেইন করার ওভারহেডের কারণে রিকার্সন সাধারণত ইটারেশন থেকে ধীর।
  • রিকার্সন ইটারেশনের চেয়ে অধিক মেমরি ব্যবহার করে।
  • রিকার্সন কোড ছোট করে।

উদাহরণ

public class RecursionExample {
    public static void main(String args[]) {
        RecursionExample re = new RecursionExample();
        int result = re.factorial(4);
        System.out.println("Result:" + result);
    }
    public int factorial(int n) {
        if (n==0) {
            return 1;
        } else {
            return n*factorial(n-1);
        }
    }
}

আউটপুট

Result:24

ইটারেশন

  • ইটারেশন রিপিটিশন স্ট্রাকচার ব্যবহার করে।
  • যদি লুপ কন্ডিশন টেস্ট কখনো false না হয়, তবে অনন্ত লুপ হয় এবং অনন্ত লুপিং সিপিইউ সাইকেল বারবার ব্যবহার করে।
  • একটি ইটারেশন টার্মিনেট হয় যখন লুপ কন্ডিশন ফেইল করে।
  • ইটারেশন স্ট্যাক ব্যবহার করে না তাই এটি রিকার্সন থেকে দ্রুত।
  • ইটারেশন কম মেমরি ব্যবহার করে।
  • ইটারেশন কোড বড় করে।

উদাহরণ

public class IterationExample {
    public static void main(String args[]) {
        for(int i = 1; i <= 5; i++) {
            System.out.println(i + " ");
        }
    }
}

আউটপুট

1 2 3 4 5
  1. জাভাতে JRadioButton এবং JCheckBox-এর পার্থক্য কী?

  2. জাভাতে JTextField এবং JTextArea-এর পার্থক্য কী?

  3. জাভাতে JFrame এবং JDialog-এর পার্থক্য কী?

  4. জাভাতে GridLayout এবং GridBagLayout-এর পার্থক্য কী?