ফাংশন

সি প্রোগ্রামিং উদাহরণ (C Examples) - Computer Science

514

সি প্রোগ্রামিং ভাষায় ফাংশন একটি স্বতন্ত্র কোডের ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে। ফাংশন প্রোগ্রামিংয়ে কোড পুনরায় ব্যবহারযোগ্য এবং আরও পরিষ্কার ও সংগঠিত রাখার সুযোগ দেয়। ফাংশন ব্যবহার করে বড় প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা যায়, যা প্রোগ্রাম তৈরি, বুঝা এবং রক্ষণাবেক্ষণের জন্য খুবই সহায়ক।

ফাংশনের মৌলিক অংশ:

১. ফাংশন ডিক্লারেশন (ঘোষণা): ফাংশনটি ব্যবহার করার পূর্বে এর প্রোটোটাইপ ডিক্লার করা হয়, যেখানে ফাংশনের নাম, রিটার্ন টাইপ এবং প্যারামিটার থাকে।

২. ফাংশন ডেফিনিশন (সংজ্ঞা): ফাংশনের মূল কোড ব্লক যা নির্দিষ্ট কাজ সম্পাদন করে।

৩. ফাংশন কল (ডাকা): ফাংশনকে প্রোগ্রামের কোথাও থেকে ডাকা হয় এবং এটি তার কাজ সম্পাদন করে।

উদাহরণ দিয়ে ফাংশন বোঝানো:

ধরা যাক, আমরা একটি ফাংশন তৈরি করতে চাই যা দুটি সংখ্যার যোগফল বের করবে।

১. ফাংশন ডিক্লারেশন:

ফাংশনটি প্রোগ্রামের শুরুতে বা ব্যবহারের আগে ডিক্লার করা যেতে পারে।

int add(int a, int b); // দুটি পূর্ণ সংখ্যার যোগফল বের করার ফাংশন ঘোষণা

২. ফাংশন ডেফিনিশন:

এটি ফাংশনের প্রকৃত বাস্তবায়ন যেখানে নির্দিষ্ট কাজ সম্পাদন করা হয়।

int add(int a, int b) {
    return a + b; // যোগফল রিটার্ন করা হচ্ছে
}

৩. ফাংশন কল:

এটি মেইন প্রোগ্রাম বা অন্য কোনো ফাংশনের মধ্যে থেকে ফাংশনকে ডাকা হয়।

#include <stdio.h>

int add(int a, int b); // ফাংশন ডিক্লারেশন

int main() {
    int result = add(10, 20); // ফাংশন কল করে দুই সংখ্যার যোগফল বের করা হচ্ছে
    printf("The sum is: %d\n", result);
    return 0;
}

int add(int a, int b) { // ফাংশন ডেফিনিশন
    return a + b;
}

আউটপুট:

The sum is: 30

ফাংশনের ধরন:

সি প্রোগ্রামিং ভাষায় বিভিন্ন প্রকার ফাংশন থাকতে পারে:

কোনো রিটার্ন ভ্যালু এবং কোনো আর্গুমেন্ট ছাড়া ফাংশন:

  • রিটার্ন টাইপ void ব্যবহার করা হয়, যখন ফাংশন কিছু রিটার্ন করে না এবং কোনো প্যারামিটার নেই।

কোনো রিটার্ন ভ্যালু ছাড়া, কিন্তু আর্গুমেন্টসহ ফাংশন:

  • ফাংশন আর্গুমেন্ট গ্রহণ করে, কিন্তু কিছু রিটার্ন করে না।

রিটার্ন ভ্যালুসহ এবং আর্গুমেন্টসহ ফাংশন:

  • যেমন add ফাংশন, যা দুইটি সংখ্যা গ্রহণ করে এবং যোগফল রিটার্ন করে।

রিটার্ন ভ্যালুসহ, কিন্তু কোনো আর্গুমেন্ট ছাড়া ফাংশন:

  • এই ধরনের ফাংশন কোনো আর্গুমেন্ট নেয় না, তবে একটি মান রিটার্ন করে।

রিকার্সিভ ফাংশন

একটি ফাংশন যদি নিজেই নিজেকে কল করে, তবে তাকে রিকার্সিভ ফাংশন বলে। এটি জটিল সমস্যাগুলোর সহজ সমাধান প্রদান করতে পারে।

রিকার্সিভ ফাংশনের উদাহরণ (ফ্যাক্টরিয়াল গণনা):

#include <stdio.h>

int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1); // রিকার্সিভ কল
    }
}

int main() {
    int num = 5;
    printf("Factorial of %d is: %d\n", num, factorial(num));
    return 0;
}

আউটপুট:

Factorial of 5 is: 120

ফাংশনের ব্যবহার:

ফাংশন কোডকে ছোট ছোট অংশে বিভক্ত করে যা প্রোগ্রামের কর্মক্ষমতা এবং রক্ষণাবেক্ষণ সহজ করে।

Content added By

ফাংশন হলো প্রোগ্রামিংয়ের একটি ব্লক বা মডিউল, যা একটি নির্দিষ্ট কাজ সম্পাদনের জন্য ডিজাইন করা হয়। ফাংশনের মূল লক্ষ্য হল কোডের পুনরায় ব্যবহারযোগ্যতা, কার্যকারিতা, এবং প্রোগ্রামের কাঠামোকে সুসংগঠিত রাখা।

ফাংশনের বৈশিষ্ট্য:

  1. কোড পুনরায় ব্যবহারযোগ্যতা: একবার একটি ফাংশন লিখলে, সেটিকে যেকোনো স্থানে একাধিকবার ব্যবহার করা যায়।
  2. সহজতা: প্রোগ্রাম ছোট ছোট অংশে বিভক্ত হয়, ফলে কোড লেখা, পড়া এবং রক্ষণাবেক্ষণ করা সহজ হয়।
  3. ডিবাগিং সহজ করা: যেহেতু প্রোগ্রাম ফাংশনের মাধ্যমে ভাগ করা থাকে, তাই ত্রুটি (bugs) খুঁজে বের করা এবং সমাধান করা সহজ হয়।
  4. পুনরাবৃত্তি হ্রাস: ফাংশন ব্যবহারের মাধ্যমে কোডের পুনরাবৃত্তি হ্রাস করা যায়, ফলে কোডের আকার ছোট হয় এবং আরও কার্যকরী হয়।

ফাংশনের ব্যবহার:

ফাংশন সাধারণত নির্দিষ্ট কাজ সম্পাদন, যেমন ডেটা প্রসেসিং, ইনপুট-আউটপুট, গণনা বা ডেটা যাচাইয়ের মতো কাজে ব্যবহৃত হয়। নিচে বিভিন্ন উদাহরণ দিয়ে ফাংশনের ব্যবহার দেখানো হলো:

উদাহরণ ১: ফাংশন ব্যবহার করে দুটি সংখ্যার যোগফল নির্ধারণ করা

#include <stdio.h>

// ফাংশন ঘোষণা
int add(int a, int b);

// মেইন ফাংশন
int main() {
    int num1 = 10, num2 = 20;
    int sum = add(num1, num2); // ফাংশন কল করা হচ্ছে
    printf("The sum is: %d\n", sum);
    return 0;
}

// ফাংশনের সংজ্ঞা
int add(int a, int b) {
    return a + b;
}

ব্যাখ্যা: এখানে add ফাংশনটি দুটি পূর্ণসংখ্যার যোগফল বের করে এবং ফলাফল রিটার্ন করে।

আউটপুট:

The sum is: 30

উদাহরণ ২: ফাংশন ব্যবহার করে একটি সংখ্যা জোড় না বিজোড় নির্ধারণ করা

#include <stdio.h>

// ফাংশন ডিফাইনেশন
void checkEvenOdd(int num) {
    if (num % 2 == 0) {
        printf("%d is Even\n", num);
    } else {
        printf("%d is Odd\n", num);
    }
}

int main() {
    int number = 7;
    checkEvenOdd(number); // ফাংশন কল করা হচ্ছে
    return 0;
}

আউটপুট:

7 is Odd

উদাহরণ ৩: রিকার্সিভ ফাংশন ব্যবহার করে ফ্যাক্টরিয়াল নির্ধারণ করা

রিকার্সিভ ফাংশন একটি ফাংশন যা নিজেকে বারবার কল করে, যতক্ষণ না নির্দিষ্ট শর্ত পূর্ণ হয়।

#include <stdio.h>

// ফ্যাক্টরিয়াল ফাংশন ডিফাইনেশন
int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1); // ফাংশন নিজেই নিজেকে কল করছে
    }
}

int main() {
    int num = 5;
    printf("Factorial of %d is: %d\n", num, factorial(num));
    return 0;
}

আউটপুট:

Factorial of 5 is: 120

ফাংশনের ব্যবহারিক ক্ষেত্রে:

  1. ডেটা প্রসেসিং: বিভিন্ন গণনামূলক কাজ যেমন যোগফল, গড়, ফ্যাক্টরিয়াল, ইত্যাদি নির্ধারণের জন্য।
  2. ডেটা যাচাই: ইনপুট ভ্যালিডেশন বা ডেটা চেকের কাজ করার জন্য।
  3. ইউজার ইন্টারফেস: প্রিন্ট, ইনপুট-আউটপুট সম্পর্কিত কাজ করার জন্য।
  4. ডাটাবেস পরিচালনা: ফাংশনের মাধ্যমে ডাটাবেস সংযোগ, ডেটা সংরক্ষণ, আপডেট ইত্যাদি কাজ করা।

সারসংক্ষেপ:

ফাংশন একটি নির্দিষ্ট কাজ সম্পাদনের জন্য একটি কোড ব্লক যা প্রোগ্রামকে আরও সহজ, সংক্ষিপ্ত এবং কার্যকরী করতে সহায়ক।

Content added By

সি প্রোগ্রামিং ভাষায় ফাংশন তৈরি ও ব্যবহারের সময় তিনটি ধাপ অনুসরণ করা হয়: ফাংশন ডিক্লারেশন (ঘোষণা), ফাংশন ডেফিনেশন (সংজ্ঞা), এবং ফাংশন কল (ডাকা)। প্রতিটি ধাপের বিশেষ ভূমিকা রয়েছে।

১. ফাংশন ডিক্লারেশন (Function Declaration)

ফাংশন ডিক্লারেশন ফাংশনের প্রোটোটাইপ ঘোষণা করে। এটি মূলত কম্পাইলারকে জানায় যে প্রোগ্রামে একটি নির্দিষ্ট ফাংশন রয়েছে। ডিক্লারেশন অংশে ফাংশনের নাম, এর রিটার্ন টাইপ এবং আর্গুমেন্টের টাইপ উল্লেখ থাকে। সাধারণত main ফাংশনের আগেই ফাংশন ডিক্লারেশন করা হয়।

গঠন:

return_type function_name(parameter_type1, parameter_type2, ...);

উদাহরণ:

int add(int a, int b); // add নামক ফাংশনের ডিক্লারেশন যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি পূর্ণসংখ্যা রিটার্ন করে।

২. ফাংশন ডেফিনেশন (Function Definition)

ফাংশনের ডেফিনেশন অংশে ফাংশনের বাস্তবায়ন (implementation) থাকে, যেখানে ফাংশনের মূল কাজ সম্পন্ন হয়। ফাংশনের ডেফিনেশনে ফাংশনের নাম, প্যারামিটার এবং কাজের জন্য নির্দিষ্ট কোড ব্লক থাকে।

গঠন:

return_type function_name(parameter_type1 parameter1, parameter_type2 parameter2, ...) {
    // ফাংশনের কাজের জন্য নির্দিষ্ট কোড
    return value; // রিটার্ন টাইপ থাকলে মান রিটার্ন করে
}

উদাহরণ:

int add(int a, int b) {
    return a + b; // দুটি সংখ্যা যোগ করে রিটার্ন করে
}

৩. ফাংশন কল (Function Call)

ফাংশন কল করার মাধ্যমে ফাংশনটি তার নির্দিষ্ট কাজ সম্পন্ন করে এবং একটি ফলাফল প্রদান করে। ফাংশন কল করার সময় ফাংশনের নাম এবং প্রয়োজনীয় আর্গুমেন্ট প্রদান করা হয়।

গঠন:

function_name(argument1, argument2, ...);

উদাহরণ:

int result = add(10, 20); // add ফাংশন কল করা হচ্ছে, যেখানে ১০ ও ২০ আর্গুমেন্ট হিসেবে পাঠানো হয়েছে।

উদাহরণ সহ পুরো ফাংশন ব্যবহারের প্রক্রিয়া

#include <stdio.h>

// ফাংশন ডিক্লারেশন
int add(int a, int b);

int main() {
    int num1 = 10, num2 = 20;
    
    // ফাংশন কল
    int sum = add(num1, num2);
    
    printf("The sum is: %d\n", sum);
    return 0;
}

// ফাংশন ডেফিনেশন
int add(int a, int b) {
    return a + b;
}

ব্যাখ্যা:

  1. ফাংশন ডিক্লারেশন: int add(int a, int b); - কম্পাইলারকে জানাচ্ছে যে add নামের একটি ফাংশন আছে, যা দুটি পূর্ণসংখ্যা গ্রহণ করে এবং একটি পূর্ণসংখ্যা রিটার্ন করে।
  2. ফাংশন কল: int sum = add(num1, num2); - এখানে add ফাংশনকে num1num2 আর্গুমেন্ট সহ কল করা হয়েছে।
  3. ফাংশন ডেফিনেশন: int add(int a, int b) { return a + b; } - এখানে add ফাংশনের কাজ নির্ধারণ করা হয়েছে, যা a এবং b যোগ করে ফলাফল রিটার্ন করে।

আউটপুট:

The sum is: 30

সারসংক্ষেপ

  • ডিক্লারেশন: ফাংশনের প্রোটোটাইপ ঘোষণা করে।
  • ডেফিনেশন: ফাংশনের কার্যক্রম এবং কাজের বাস্তবায়ন করে।
  • কল: ফাংশনকে কাজ সম্পাদনের জন্য ডাকে।

এই তিনটি ধাপ সঠিকভাবে অনুসরণ করে ফাংশন ব্যবহারের মাধ্যমে প্রোগ্রামিং আরও সুসংগঠিত ও পুনরায় ব্যবহারযোগ্য করা যায়।

Content added By

সি প্রোগ্রামিং ভাষায় ফাংশনের মাধ্যমে প্যারামিটার পাসিং সাধারণত দুটি পদ্ধতিতে করা হয়: পাস-বাই-ভ্যালু এবং পাস-বাই-রেফারেন্স। এই পদ্ধতিগুলির মাধ্যমে ফাংশনে ভ্যারিয়েবল পাস করা হয় এবং সেগুলি ফাংশনের ভিতরে ব্যবহৃত হয়।

১. পাস-বাই-ভ্যালু (Pass-by-Value)

পাস-বাই-ভ্যালু পদ্ধতিতে ভ্যারিয়েবলের মান কেবলমাত্র ফাংশনে কপি করা হয়। এর মানে হল, ফাংশনের ভিতরে সেই কপিকৃত মান ব্যবহার করা হয়, মূল ভ্যারিয়েবলের উপর কোনো পরিবর্তন করা হলে সেটি মূল ভ্যারিয়েবলে প্রভাব ফেলে না।

উদাহরণ:

ধরা যাক, আমরা একটি ফাংশন তৈরি করছি যা দুটি সংখ্যার মান অদল-বদল (swap) করার চেষ্টা করবে। তবে পাস-বাই-ভ্যালু পদ্ধতিতে মূল মানগুলো পরিবর্তিত হবে না।

#include <stdio.h>

void swap(int x, int y) {
    int temp = x;
    x = y;
    y = temp;
    printf("Inside swap function: x = %d, y = %d\n", x, y);
}

int main() {
    int a = 5, b = 10;
    printf("Before swap: a = %d, b = %d\n", a, b);
    
    swap(a, b); // পাস-বাই-ভ্যালু, শুধুমাত্র কপি পাঠানো হচ্ছে
    
    printf("After swap: a = %d, b = %d\n", a, b);
    return 0;
}

আউটপুট:

Before swap: a = 5, b = 10
Inside swap function: x = 10, y = 5
After swap: a = 5, b = 10

বিবরণ:

  • এখানে swap ফাংশনে a এবং b এর মান কপি করা হয়েছে এবং সেই কপিগুলির মান অদল-বদল করা হয়েছে। তবে ফাংশনের বাইরে a এবং b এর আসল মান অপরিবর্তিত থাকে, কারণ এটি পাস-বাই-ভ্যালু দ্বারা পাস করা হয়েছে।

২. পাস-বাই-রেফারেন্স (Pass-by-Reference)

পাস-বাই-রেফারেন্স পদ্ধতিতে ভ্যারিয়েবলের ঠিকানা (address) ফাংশনে পাঠানো হয়। এর ফলে ফাংশনের ভিতরে ভ্যারিয়েবলের আসল মান পরিবর্তন করা সম্ভব হয়।

সি ভাষায় সরাসরি পাস-বাই-রেফারেন্স নেই, তবে পয়েন্টার ব্যবহার করে আমরা পাস-বাই-রেফারেন্সের মতো আচরণ করতে পারি।

উদাহরণ:

একই swap ফাংশন এখানে পাস-বাই-রেফারেন্স পদ্ধতিতে তৈরি করা হয়েছে। পয়েন্টারের মাধ্যমে দুটি সংখ্যার মান অদল-বদল করা হবে।

#include <stdio.h>

void swap(int *x, int *y) {
    int temp = *x;
    *x = *y;
    *y = temp;
    printf("Inside swap function: x = %d, y = %d\n", *x, *y);
}

int main() {
    int a = 5, b = 10;
    printf("Before swap: a = %d, b = %d\n", a, b);
    
    swap(&a, &b); // পাস-বাই-রেফারেন্স, ঠিকানা পাঠানো হচ্ছে
    
    printf("After swap: a = %d, b = %d\n", a, b);
    return 0;
}

আউটপুট:

Before swap: a = 5, b = 10
Inside swap function: x = 10, y = 5
After swap: a = 10, b = 5

বিবরণ:

  • এখানে swap ফাংশনে a এবং b এর ঠিকানা পাস করা হয়েছে। ফাংশনের ভিতরে পয়েন্টার *x এবং *y এর মাধ্যমে আসল ভ্যারিয়েবলের মান পরিবর্তন করা সম্ভব হয়েছে। এর ফলে মূল ভ্যারিয়েবল a এবং b এর মানও পরিবর্তিত হয়েছে।

সংক্ষেপে পার্থক্য:

বৈশিষ্ট্যপাস-বাই-ভ্যালুপাস-বাই-রেফারেন্স
প্রকৃতিভ্যারিয়েবলের মান কপি করা হয়ভ্যারিয়েবলের ঠিকানা পাস করা হয়
মূল ভ্যারিয়েবলে প্রভাবপরিবর্তন হয় নাপরিবর্তন সরাসরি মূল ভ্যারিয়েবলে প্রভাব ফেলে
প্রয়োগ পদ্ধতিসাধারণভাবে প্যারামিটার পাস করা হয়পয়েন্টারের মাধ্যমে পাস করা হয়

পাস-বাই-ভ্যালু পদ্ধতিতে মূল ডেটা অপরিবর্তিত থাকে, তবে পাস-বাই-রেফারেন্সের মাধ্যমে মূল ডেটায় সরাসরি পরিবর্তন করা যায়।

Content added By

রিকার্সন হলো প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ কৌশল, যেখানে একটি ফাংশন নিজেই নিজেকে কল করে এবং একটি নির্দিষ্ট শর্তে পৌঁছালে কল বন্ধ হয়। এই শর্তকে বেস কেস (base case) বলা হয়। রিকার্সন ব্যবহার করে জটিল সমস্যাগুলিকে সহজভাবে সমাধান করা যায়, বিশেষ করে যখন সমস্যাগুলি ছোট ছোট অংশে বিভক্ত করা সম্ভব হয়।

রিকার্সনের বৈশিষ্ট্য

১. বেস কেস: রিকার্সিভ ফাংশনের এমন একটি অবস্থা, যখন ফাংশন আর নিজেকে কল করবে না এবং সরাসরি ফলাফল প্রদান করবে। ২. রিকার্সিভ কেস: যেখানে ফাংশন নিজেকে কল করে ছোট অংশে বিভক্ত করে সমস্যার সমাধান করে।

উদাহরণ: ফ্যাক্টরিয়াল গণনা

ফ্যাক্টরিয়াল হলো একটি পূর্ণসংখ্যার গুণফল যা ঐ সংখ্যার আগের সমস্ত সংখ্যা দ্বারা গুণ করা হয়। যেমন, 5!=5×4×3×2×1=1205! = 5 \times 4 \times 3 \times 2 \times 1 = 1205!=5×4×3×2×1=120।

ফ্যাক্টরিয়াল রিকার্সিভ ফাংশনের মাধ্যমে:

কোড:

#include <stdio.h>

// রিকার্সিভ ফাংশন
int factorial(int n) {
    if (n == 0 || n == 1) { // বেস কেস
        return 1;
    } else {
        return n * factorial(n - 1); // রিকার্সিভ কল
    }
}

int main() {
    int num = 5;
    printf("Factorial of %d is: %d\n", num, factorial(num));
    return 0;
}

আউটপুট:

Factorial of 5 is: 120

ব্যাখ্যা: factorial ফাংশনটি নিজেকে বারবার কল করে যতক্ষণ না n এর মান ১ বা ০ হয়। এই শর্তটি বেস কেস হিসেবে কাজ করে এবং তখন ১ রিটার্ন করে।

রিকার্সনের প্রয়োগ

রিকার্সন প্রোগ্রামিংয়ের বিভিন্ন ক্ষেত্রে ব্যবহৃত হয়, যেমন:

  1. ফ্যাক্টরিয়াল গণনা: যেমন উপরে দেখানো হয়েছে।
  2. ফিবোনাচ্চি সিরিজ: ফিবোনাচ্চি সিরিজে প্রতিটি সংখ্যা পূর্ববর্তী দুটি সংখ্যার যোগফল।
  3. গণিতের সমস্যাগুলি সমাধান: যেমন পাওয়ার (power) গণনা, গড়, ম্যাক্সিমাম-সাম্ভাবনা প্রভৃতি।
  4. ডাটা স্ট্রাকচার ট্রাভার্সাল: যেমন বাইনারি ট্রি বা গ্রাফের ট্রাভার্সালে।
  5. বাইনারি সার্চ: পুনরাবৃত্তি করে ছোট ছোট অংশে বিভক্ত করে দ্রুত অনুসন্ধান।
  6. হ্যানয় টাওয়ার সমস্যার সমাধান: রিকার্সিভ কৌশলে জটিল সমস্যা সমাধানে ব্যবহৃত হয়।

উদাহরণ: ফিবোনাচ্চি সিরিজ

ফিবোনাচ্চি সিরিজে প্রতিটি সংখ্যা তার আগের দুটি সংখ্যার যোগফল।

ফিবোনাচ্চি সিরিজের জন্য রিকার্সিভ ফাংশন:

F(n)=F(n−1)+F(n−2)যেখানে, F(0)=0 এবং F(1)=1F(n) = F(n-1) + F(n-2) \quad \text{যেখানে, } F(0) = 0 \text{ এবং } F(1) = 1F(n)=F(n−1)+F(n−2)যেখানে, F(0)=0 এবং F(1)=1

কোড:

#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) {
        return 0;
    } else if (n == 1) {
        return 1;
    } else {
        return fibonacci(n - 1) + fibonacci(n - 2); // রিকার্সিভ কল
    }
}

int main() {
    int terms = 10;
    printf("Fibonacci Series: ");
    for (int i = 0; i < terms; i++) {
        printf("%d ", fibonacci(i));
    }
    return 0;
}

আউটপুট:

Fibonacci Series: 0 1 1 2 3 5 8 13 21 34

রিকার্সনের সুবিধা এবং অসুবিধা

সুবিধা:

  • জটিল সমস্যার সমাধান সহজভাবে করা যায়।
  • ডাটা স্ট্রাকচার যেমন ট্রি, গ্রাফ ইত্যাদির ক্ষেত্রে সহজে প্রয়োগ করা যায়।
  • প্রোগ্রামের লজিক বোঝা এবং লিখা সহজ হয়।

অসুবিধা:

  • অতিরিক্ত মেমোরি ব্যবহার হয়, কারণ প্রতিটি রিকার্সিভ কল স্ট্যাক মেমোরি দখল করে।
  • যদি বেস কেস ঠিকমতো সংজ্ঞায়িত না হয়, তবে প্রোগ্রাম ইনফাইনাইট লুপে চলে যেতে পারে।
  • বড় ইনপুটের ক্ষেত্রে রিকার্সন কার্যকর নাও হতে পারে এবং টাইম কমপ্লেক্সিটি বেড়ে যায়।

রিকার্সন প্রোগ্রামিংকে আরও সংক্ষিপ্ত ও কার্যকর করতে পারে, তবে এটি ব্যবহারের ক্ষেত্রে সাবধানতা অবলম্বন করা গুরুত্বপূর্ণ।

Content added By
Promotion

Are you sure to start over?

Loading...