সি রিকার্শন

রিকার্শন কী?

রিকার্শন হলো মূলত একটি ফাংশনের নিজেই নিজেকে কল করার ঘটনা । নিচের উদাহরণটি লক্ষ্য করোঃ 

1#include <stdio.h>
2int sum(int i) {
3  if (i > 0) {
4    printf("Value of i is: %d\n", i);
5    return i + sum(i - 1);
6  } else {
7    return 0;
8  }
9}
10
11int main() {
12  int result = sum(10);
13  printf("\n%d\n", result);
14  return 0;
15}
16

এ প্রোগ্রামটি রান করলে নিচের মতো আউটপুট আসবেঃ 

Value of i is: 10
Value of i is: 9
Value of i is: 8
Value of i is: 7
Value of i is: 6
Value of i is: 5
Value of i is: 4
Value of i is: 3
Value of i is: 2
Value of i is: 1

55
 

কিন্তু এখানে আসলে কীভাবে কী হলো? প্রথমে ফাংশনের মধ্যে পাঠানো হলো । সেখানে একবার এই মান প্রিন্ট হলো । এরপরে লাইন ৫ এ গিয়ে কল করা হলো । এই লাইনের মান দাঁড়ালো,

তো এবার  এ আবার পাঠানো হলো । সেটিও একবার প্রিন্ট হলো । এবার এই পুরো   এর মান দাঁড়ালো । আবার আগে থেকে যোগ অবস্থায় ছিলো । তাই পুরো লাইনটির মান দাঁড়ালো

এরপরে  এর মান হবে । তাই পুরো টার মান হবে । এভাবে চলতে থাকবে যতক্ষন পর্যন্ত না এর মান হচ্ছে ।

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

রিকার্শন ব্যবহারে সতর্কতা!

আগের উদাহরণে আমরা এর মান একটা নির্দিষ্ট ভ্যালু পর্যন্ত কমিয়েছি এবং রিকার্শনকে এর মাধ্যমেই নিয়ন্ত্রণ করেছি । কিন্তু ছোটোখাটো ভুলের কারণে এই নিয়ন্ত্রণ নষ্ট হয়ে যেতে পারে । নিচের কোডটি দেখোঃ

1#include <stdio.h>
2int sum(int i) {
3  if (i > 0) {
4    printf("Value of i is: %d\n", i);
5    return i + sum(i + 1);
6  } else {
7    return 0;
8  }
9}
10
11int main() {
12  int result = sum(10);
13  printf("\n%d\n", result);
14  return 0;
15}
16

এটি আগের কোডটাই, শুধু লাইন ৫ এ আমরা এর জায়গায় দিয়েছি । এর ফলে এটি একটি Endless Loop এর মধ্যে পড়ে যাবে এবং সেকেন্ডের মধ্যেই প্রোগ্রামটি তার বরাদ্দকৃত সব মেমোরি ব্যবহার করে ফেলবে এবং এরর দিবে । তাই রিকার্শন ব্যবহারে একটু সতর্ক থাকা প্রয়োজন । 

Logo

PyxLearn

Quick Links

আমাদের মেসেজ পাঠাতে চাও?