1
1

Recursive ফাংশন কি? কোন কোন ক্ষেত্রে ব্যাবহার করতে হয়?

asked 22 Jan '15, 10:39

Minhaj%20Hasan's gravatar image

Minhaj Hasan
59421137


যদি একটি ফাংশন f() যা নিজেই নিজের একটি কল স্টেটমেন্ট অথবা দ্বিতীয় কোন ফাংশনের একটি কল স্টেটমেন্ট দ্বারা f() এ ফিরে আসে তখন f() কে রিকার্সিভ ফাংশন বলে । ফাংশনটি যাতে অনির্দিষ্ট সময় ধরে না চলে তার জন্য কিছু বিষয় মেনে চলা হয় ।

  • এমন কিছু বৈশিষ্ট্য যার জন্য ফাংশনটি আর নিজেকে কল করে না । অর্থাৎ ফাংশনের কিছু আর্গুমেন্ট থাকবে যার জন্য ফাংশনটি আর নিজেকে কল করবে না । একে বেস ভ্যালু বলে ।
  • প্রত্যেক সময়ে যখন ফাংশনটি নিজেকে কল করে তখন ফাংশনের আর্গুমেন্ট বেস ভ্যেলুর নিকটবর্তী হতে থাকবে । অর্থাৎ রিকার্সন এর ক্ষেত্রে একটি শর্ত লাগবে যার জন্য ফাংশনটি কোন এক সময় টারমিনেট করবে এবং প্রতিবার সেই শর্তের দিকে ফাংশনটি আগাবে ।

আমরা ফেক্টরিয়াল হিসাবের ফাংশনটি লক্ষ করি ।

int fact (int n){

  if(n==1)  return 1;
   return n*fact(n-1);

}

fact(5) এর মান প্রিন্ট করা হইলে প্রিন্ট করবে ১২০ ।

এখানে if(n==1) return 1; এটা হল টার্মিনেট করার শর্ত , যাকে বলে বেস ভ্যালু । এখন এর ভিতর যে ফাংশনটি কল করা হয়েছে তা হল fact(n-1) । অর্থাৎ

fact(5) ফাংশনটি কল করবে fact(4) ফাংশনটিকে

fact(4) ফাংশনটি কল করবে fact(3) ফাংশনটিকে

fact(3) ফাংশনটি কল করবে fact(2) ফাংশনটিকে

fact(2) ফাংশনটি কল করবে fact(1) ফাংশনটিকে

যখন fact(1) ফাংশনটির কাজ শুরু হবে n==1 এই শর্তটা সত্য হওয়ার জন্য ফাংশনটি 1 রিটার্ন করবে । এই রিটার্ন না করলে অনির্দিষ্ট সময় ধরে প্রোগ্রামটি চলতো । তারপর এই

fact(1), 1 রিটার্ন করবে fact(2) কে

fact(২), 2fact(1) = 21 = 2 রিটার্ন করবে fact(3) কে

fact(3), 3fact(2) = 32= 6 রিটার্ন করবে fact(4) কে

fact(4), 4fact(3) = 46 = 24 রিটার্ন করবে fact(5) কে

আর তাই fact(5) এর মান হবে 5fact(4) = 524 = 120 ।

রিকার্সনের সবচেয়ে বড় সুবিধা হল কোড ছোট হয় । অনেক বড় কাজ খুব ছোট কোডে হয়ে যায় । যেখানে স্টাক ব্যাবহার করা হয় সেখানে রিকার্সন খুব ভালো কাজ করে । আপনি লুপের সব কাজ রিকার্সন দিয়ে করতে পারবেন । ডায়নামিক প্রোগ্রামিং এ রিকার্সন একটি শক্তিশালী টেকনিক ।

এই পোস্টগুলো দেখতে পারেন রিকার্সন

permanent link

answered 22 Jan '15, 12:20

Sharif%20Chowdhury's gravatar image

Sharif Chowdhury
3.5k111

খুব সুন্দরভাবে লিখা রয়েছে এই ব্লগে -Recursion কি?

permanent link

answered 22 Jan '15, 11:50

Kaiser%20Ahmed's gravatar image

Kaiser Ahmed
3.2k1622

A recursive function (DEF) is a function which either calls itself or is in a potential cycle of function calls. As the definition specifies, there are two types of recursive functions. Consider a function which calls itself: we call this type of recursion immediate recursion. One can view this mathematically in a directed call graph.

void A() {

A();

return;

}

A() is a recursive function since it directly calls itself.

permanent link

answered 22 Jan '15, 12:15

ishahriyar's gravatar image

ishahriyar
9519

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×402
×214
×131
×31
×3

question asked: 22 Jan '15, 10:39

question was seen: 3,985 times

last updated: 12 Apr '15, 17:21