<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://sakibntanmoy006.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://sakibntanmoy006.github.io/" rel="alternate" type="text/html" /><updated>2026-09-14T19:35:01+00:00</updated><id>https://sakibntanmoy006.github.io/feed.xml</id><title type="html">Sakib Nawar Tanmoy | GRC &amp;amp; Compliance Technology</title><subtitle>GRC and compliance technology specialist in Dhaka building auditable enterprise systems across policy governance, ISMS, AI governance, document control, ERP intelligence and compliance automation.</subtitle><author><name>Sakib Nawar Tanmoy</name></author><entry><title type="html">Welcome to my blog</title><link href="https://sakibntanmoy006.github.io/blog/2025/11/27/welcome-to-my-blog.html" rel="alternate" type="text/html" title="Welcome to my blog" /><published>2025-11-27T06:00:00+00:00</published><updated>2025-11-27T06:00:00+00:00</updated><id>https://sakibntanmoy006.github.io/blog/2025/11/27/welcome-to-my-blog</id><content type="html" xml:base="https://sakibntanmoy006.github.io/blog/2025/11/27/welcome-to-my-blog.html"><![CDATA[<h2 id="hello-world-">Hello World! 👋</h2>

<p>Welcome to my new digital garden. I’m thrilled to launch this space where I’ll be sharing my thoughts, experiments, and learnings at the intersection of <strong>Data Science</strong>, <strong>Software Engineering</strong>, and <strong>Design</strong>.</p>

<h2 id="why-this-blog">Why this blog?</h2>

<p>I believe that the best way to learn is to share. In this blog, I aim to document my journey, break down complex concepts, and showcase projects that I’m passionate about.</p>

<h3 id="what-you-can-expect">What you can expect:</h3>

<ul>
  <li><strong>Deep Dives</strong>: Technical articles on machine learning, web development, and system design.</li>
  <li><strong>Project Showcases</strong>: Behind-the-scenes looks at my latest builds.</li>
  <li><strong>Design Thoughts</strong>: Explorations of UI/UX trends and aesthetic engineering.</li>
  <li><strong>Tutorials</strong>: Step-by-step guides to help you build cool stuff.</li>
</ul>

<p>I’m excited to have you here. Let’s build something amazing together!</p>

<p><img src="/blog/images/welcome-to-my-blog-1.png" alt="Welcome Image" /></p>

<blockquote>
  <p>“The only way to do great work is to love what you do.” - Steve Jobs</p>
</blockquote>

<hr />

<!-- bn -->

<h2 id="হ্যালো-ওয়ার্ল্ড-">হ্যালো ওয়ার্ল্ড! 👋</h2>

<p>আমার নতুন ডিজিটাল বাগানে আপনাকে স্বাগতম। আমি এই স্থানটি চালু করতে পেরে আনন্দিত যেখানে আমি <strong>ডেটা সায়েন্স</strong>, <strong>সফ্টওয়্যার ইঞ্জিনিয়ারিং</strong> এবং <strong>ডিজাইন</strong>-এর সংযোগস্থলে আমার চিন্তাভাবনা, পরীক্ষা-নিরীক্ষা এবং শিক্ষাগুলি শেয়ার করব।</p>

<h2 id="কেন-এই-ব্লগ">কেন এই ব্লগ?</h2>

<p>আমি বিশ্বাস করি যে শেখার সর্বোত্তম উপায় হল শেয়ার করা। এই ব্লগে, আমি আমার যাত্রা নথিবদ্ধ করতে, জটিল ধারণাগুলি সহজ করতে এবং আমার পছন্দের প্রকল্পগুলি প্রদর্শন করতে চাই।</p>

<h3 id="আপনি-যা-আশা-করতে-পারেন">আপনি যা আশা করতে পারেন:</h3>

<ul>
  <li><strong>গভীর আলোচনা</strong>: মেশিন লার্নিং, ওয়েব ডেভেলপমেন্ট এবং সিস্টেম ডিজাইনের উপর প্রযুক্তিগত নিবন্ধ।</li>
  <li><strong>প্রকল্প প্রদর্শনী</strong>: আমার সর্বশেষ কাজগুলোর পেছনের গল্প।</li>
  <li><strong>ডিজাইন ভাবনা</strong>: UI/UX ট্রেন্ড এবং নান্দনিক ইঞ্জিনিয়ারিং নিয়ে অন্বেষণ।</li>
  <li><strong>টিউটোরিয়াল</strong>: আপনাকে চমৎকার কিছু তৈরি করতে সাহায্য করার জন্য ধাপে ধাপে নির্দেশিকা।</li>
</ul>

<p>আপনাকে এখানে পেয়ে আমি উচ্ছ্বসিত। আসুন একসাথে চমৎকার কিছু তৈরি করি!</p>

<p><img src="/blog/images/welcome-to-my-blog-1.png" alt="স্বাগতম ছবি" /></p>

<blockquote>
  <p>“মহৎ কাজ করার একমাত্র উপায় হল আপনি যা করেন তা ভালোবাসা।” - স্টিভ জবস</p>
</blockquote>]]></content><author><name>Sakib Nawar Tanmoy</name></author><category term="blog" /><category term="intro" /><category term="personal" /><category term="tech" /><category term="design" /><summary type="html"><![CDATA[Welcome to my new digital garden, where I share thoughts, experiments and learnings across data science, software engineering and design.]]></summary></entry><entry><title type="html">Call by Value and Call by Reference in C Programming Language</title><link href="https://sakibntanmoy006.github.io/blog/2025/11/27/call-by-value-and-call-by-reference.html" rel="alternate" type="text/html" title="Call by Value and Call by Reference in C Programming Language" /><published>2025-11-27T00:00:00+00:00</published><updated>2025-11-27T00:00:00+00:00</updated><id>https://sakibntanmoy006.github.io/blog/2025/11/27/call-by-value-and-call-by-reference</id><content type="html" xml:base="https://sakibntanmoy006.github.io/blog/2025/11/27/call-by-value-and-call-by-reference.html"><![CDATA[<p>Understanding how data is passed to functions is one of the most important concepts in C programming. When you work with functions, you often need to control whether the original data changes or stays the same. This is where call by value and call by reference come in. Knowing the difference makes your code safer, more predictable, and easier to debug.</p>

<h2 id="what-is-call-by-value">What is Call by Value</h2>

<p>In call by value, C sends a copy of the actual variable into the function. The original variable stays unchanged no matter what you do inside the function. Many new programmers find this helpful because it prevents accidental changes. However, it also means that if you want a function to modify real data, call by value will not work.</p>

<h2 id="how-call-by-value-works">How Call by Value Works</h2>

<p>When you pass an integer into a function, C creates a new memory location that stores the same value. Any change inside the function affects only that copy. For example, if you try to update a number inside a function, the main variable will remain the same. This is why call by value is often used for safety.</p>

<h2 id="what-is-call-by-reference">What is Call by Reference</h2>

<p>Call by reference is used when you want a function to modify the original variable. C does not directly support call by reference like some other languages. Instead, you must use pointers. By passing the address of a variable, you allow the function to access and change the real value stored in memory.</p>

<h2 id="how-call-by-reference-works">How Call by Reference Works</h2>

<p>When you pass a pointer, the function receives the memory address of the variable. So any change made through the pointer affects the actual variable. This is useful when you want to update multiple values from a single function or return more than one result.</p>

<p><img src="/blog/images/c-call-by-value-reference-1.jpg" alt="Call by value vs call by reference" /></p>

<h2 id="conclusion">Conclusion</h2>

<p>Call by value and call by reference are simple ideas, but they shape how your program behaves. Call by value protects your original data by using copies. Call by reference gives you more control by allowing direct changes. Once you understand both, you can choose the right method depending on the needs of your program.</p>

<!-- bn -->

<p>ফাংশনে ডেটা কীভাবে পাঠানো হয়, সেটি C প্রোগ্রামিংয়ের একটি খুব গুরুত্বপূর্ণ অংশ। যখন আপনি ফাংশন ব্যবহার করেন, তখন অনেক সময় ঠিক করতে হয় আসল ভেরিয়েবলটি পরিবর্তন হবে কিনা। এই বিষয়টি বুঝতেই call by value এবং call by reference ব্যবহার করা হয়। এগুলো ঠিকভাবে জানলে কোড কম ভুল করে, আরও সহজে বোঝা যায়।</p>

<h2 id="call-by-value-কী">Call by Value কী</h2>

<p>Call by value হল এমন একটি পদ্ধতি যেখানে ভেরিয়েবলের একটি কপি ফাংশনে পাঠানো হয়। মূল ভেরিয়েবল অপরিবর্তিত থাকে, যতই ফাংশনের ভিতরে পরিবর্তন করুন না কেন। নতুন প্রোগ্রামারদের জন্য এটি নিরাপদ, কারণ ভুল করে ডেটা নষ্ট হওয়ার সম্ভাবনা থাকে না। তবে, যদি আপনি চান ফাংশন আসল ডেটা পরিবর্তন করুক, তাহলে call by value কাজ করবে না।</p>

<h2 id="call-by-value-কীভাবে-কাজ-করে">Call by Value কীভাবে কাজ করে</h2>

<p>আপনি যখন একটি ইন্টিজার ফাংশনে পাঠান, C তার একটি আলাদা কপি তৈরি করে। ফাংশনের ভিতরে যত পরিবর্তন করবেন, তা শুধু কপিতে হবে। মূল ভেরিয়েবল একই থাকে। তাই সাধারণ কাজের জন্য বা ডেটা নিরাপদ রাখতে এটি ব্যবহার করা হয়।</p>

<h2 id="call-by-reference-কী">Call by Reference কী</h2>

<p>Call by reference ব্যবহার করা হয় যখন আপনি চান ফাংশন আসল ভেরিয়েবলটি পরিবর্তন করুক। C ভাষায় সরাসরি call by reference নেই, কিন্তু পয়েন্টারের মাধ্যমে এটি করা যায়। আপনি ভেরিয়েবলের ঠিকানা পাঠালে ফাংশন সরাসরি সেই মেমরির মান পরিবর্তন করতে পারে।</p>

<h2 id="call-by-reference-কীভাবে-কাজ-করে">Call by Reference কীভাবে কাজ করে</h2>

<p>পয়েন্টার পাঠানোর সময় ফাংশন ভেরিয়েবলের অ্যাড্রেস পায়। তাই পয়েন্টারের মাধ্যমে যত পরিবর্তন করবেন, তা আসল ভেরিয়েবলেই প্রভাব ফেলবে। এটি বিশেষভাবে দরকার হয় যখন আপনি একটি ফাংশন থেকে একাধিক মান পরিবর্তন করতে চান।</p>

<p><img src="/blog/images/c-call-by-value-reference-1.jpg" alt="Call by value vs call by reference" /></p>

<h2 id="উপসংহার">উপসংহার</h2>

<p>Call by value এবং call by reference খুব সাধারণ ধারণা মনে হলেও প্রোগ্রামের আচরণকে অনেক প্রভাবিত করে। Call by value ডেটা নিরাপদ রাখে কপি ব্যবহার করে, আর call by reference আপনাকে আরও নিয়ন্ত্রণ দেয় আসল ডেটা পরিবর্তন করার। কোন ক্ষেত্রে কোনটি ব্যবহার করবেন, সেটি বুঝে নিতে পারলে প্রোগ্রামিং আরও সহজ হয়ে যায়।</p>]]></content><author><name>Sakib Nawar Tanmoy</name></author><category term="blog" /><category term="c programming" /><category term="pointers" /><category term="functions" /><category term="beginners guide" /><summary type="html"><![CDATA[Understanding how data is passed to functions is one of the most important concepts in C programming. When you work with functions, you often need to control whether the original data changes or stays the same. This is where call by value and call by reference come in. Knowing the difference makes your code safer, more predictable, and easier to debug.]]></summary></entry><entry><title type="html">The Relationship Between Data Science and AI</title><link href="https://sakibntanmoy006.github.io/blog/2025/11/27/data-science-and-ai.html" rel="alternate" type="text/html" title="The Relationship Between Data Science and AI" /><published>2025-11-27T00:00:00+00:00</published><updated>2025-11-27T00:00:00+00:00</updated><id>https://sakibntanmoy006.github.io/blog/2025/11/27/data-science-and-ai</id><content type="html" xml:base="https://sakibntanmoy006.github.io/blog/2025/11/27/data-science-and-ai.html"><![CDATA[<p>Understanding the relationship between data science and AI helps us see how modern technology makes smarter decisions. Both fields often work together and support each other in many real world applications. While data science focuses on extracting knowledge from data, AI focuses on creating intelligent systems that can learn and act on their own.</p>

<h2 id="what-connects-data-science-and-ai">What Connects Data Science and AI</h2>

<p>Data science deals with gathering, cleaning, analyzing, and visualizing data so that useful insights can be discovered. AI uses these insights to train models that can make predictions, automate tasks, or imitate human like decision making. One cannot function effectively without the other because AI needs data to learn, and data science needs AI techniques to build advanced predictive models.</p>

<h2 id="how-data-science-supports-ai">How Data Science Supports AI</h2>

<p>Data science provides the raw materials AI needs. The quality of data preparation, feature engineering, and statistical analysis greatly influences how well AI models perform. For example, in a recommendation system, data science prepares the information about user behavior, and AI uses that data to predict what users might like next.</p>

<h2 id="how-ai-enhances-data-science">How AI Enhances Data Science</h2>

<p>AI adds intelligence to data science workflows by helping automate processes, reduce errors, and detect hidden patterns. Machine learning models, neural networks, and deep learning systems expand the power of data science by making more accurate predictions and solving complex problems that traditional analysis cannot handle.</p>

<p><img src="/blog/images/data-science-and-ai-1.jpg" alt="Illustration of data science and AI working together" /></p>

<h2 id="real-world-example">Real World Example</h2>

<p>Think of platforms like Netflix or YouTube. Data science analyzes user viewing history, trends, and interactions. AI then takes those insights and generates personalized recommendations. Together they deliver a smooth, smart, and user friendly experience.</p>

<h2 id="conclusion">Conclusion</h2>

<p>Data science and AI are deeply connected fields. Data science provides the data and insights, while AI uses that knowledge to make smart decisions. When combined, they create powerful systems that learn, predict, and automate tasks across almost every industry.</p>

<!-- bn -->

<p>ডেটা সায়েন্স এবং এআই এর সম্পর্ক বুঝতে পারলে আমরা জানতে পারি আধুনিক প্রযুক্তি কীভাবে বুদ্ধিমান সিদ্ধান্ত নেয়। ডেটা সায়েন্স মূলত ডেটা থেকে জ্ঞান বের করার কাজ করে, আর এআই সেই জ্ঞান ব্যবহার করে শেখে এবং স্বয়ংক্রিয়ভাবে সিদ্ধান্ত নেয়। এই দুই ক্ষেত্র একে অন্যের উপর নির্ভর করে এবং অনেক বাস্তব কাজে একসঙ্গে ব্যবহৃত হয়।</p>

<h2 id="কীভাবে-ডেটা-সায়েন্স-এবং-এআই-একে-অন্যের-সঙ্গে-যুক্ত">কীভাবে ডেটা সায়েন্স এবং এআই একে অন্যের সঙ্গে যুক্ত</h2>

<p>ডেটা সায়েন্স ডেটা সংগ্রহ, পরিষ্কার, বিশ্লেষণ এবং ভিজুয়ালাইজেশন করার কাজ করে। এআই সেই বিশ্লেষণ করা ডেটা ব্যবহার করে মডেল ট্রেন করে, যাতে সিস্টেম পূর্বাভাস দিতে পারে বা কোনো কাজ স্বয়ংক্রিয়ভাবে করতে পারে। ডেটা ছাড়া এআই শিখতে পারে না, আর উন্নত মডেল তৈরি করতে ডেটা সায়েন্সও এআই এর উপর নির্ভর করে।</p>

<h2 id="ডেটা-সায়েন্স-কীভাবে-এআই-কে-সাহায্য-করে">ডেটা সায়েন্স কীভাবে এআই কে সাহায্য করে</h2>

<p>ডেটা সায়েন্স এআই এর শেখার জন্য প্রয়োজনীয় ডেটা প্রস্তুত করে। ডেটা প্রস্তুতি, ফিচার ইঞ্জিনিয়ারিং এবং বিশ্লেষণ যত ভালো হবে, এআই মডেল তত ভালো ফলাফল দেবে। উদাহরণ হিসেবে সুপারিশ করার সিস্টেমে, ডেটা সায়েন্স ব্যবহারকারীর আচরণের ডেটা তৈরি করে দেয় এবং এআই সেই ডেটা ব্যবহার করে কী সাজেস্ট করা উচিত তা নির্ধারণ করে।</p>

<h2 id="এআই-কীভাবে-ডেটা-সায়েন্সকে-উন্নত-করে">এআই কীভাবে ডেটা সায়েন্সকে উন্নত করে</h2>

<p>এআই ডেটা সায়েন্সকে আরও শক্তিশালী করে তোলে স্বয়ংক্রিয় বিশ্লেষণ, ভুল কমানো এবং জটিল প্যাটার্ন খুঁজে বের করার মাধ্যমে। মেশিন লার্নিং, নিউরাল নেটওয়ার্ক এবং ডিপ লার্নিং ডেটা সায়েন্সের ক্ষমতা বাড়িয়ে তোলে এবং এমন সমস্যা সমাধান করে যা সাধারণ বিশ্লেষণ দিয়ে সম্ভব নয়।</p>

<p><img src="/blog/images/data-science-and-ai-1.jpg" alt="ডেটা সায়েন্স এবং এআই একসঙ্গে কাজ করার চিত্র" /></p>

<h2 id="বাস্তব-উদাহরণ">বাস্তব উদাহরণ</h2>

<p>নেটফ্লিক্স বা ইউটিউবকে ভাবুন। ডেটা সায়েন্স ব্যবহারকারীর দেখা ভিডিও, পছন্দ এবং আচরণ বিশ্লেষণ করে। এআই সেই তথ্য ব্যবহার করে ব্যক্তিগতকৃত ভিডিও সাজেস্ট করে। এই দুই এর মিলিত ব্যবহারে আমরা খুব স্মার্ট এবং আরামদায়ক অভিজ্ঞতা পাই।</p>

<h2 id="উপসংহার">উপসংহার</h2>

<p>ডেটা সায়েন্স এবং এআই একে অন্যের সঙ্গে ঘনিষ্ঠভাবে যুক্ত। ডেটা সায়েন্স তথ্য এবং বিশ্লেষণ দেয়, আর এআই সেই তথ্য ব্যবহার করে বুদ্ধিমান সিদ্ধান্ত নেয়। একসঙ্গে কাজ করলে তারা শক্তিশালী সিস্টেম তৈরি করে যা শেখে, পূর্বাভাস দেয় এবং অনেক কাজ স্বয়ংক্রিয়ভাবে সম্পন্ন করে।</p>]]></content><author><name>Sakib Nawar Tanmoy</name></author><category term="blog" /><category term="data science" /><category term="artificial intelligence" /><category term="machine learning" /><summary type="html"><![CDATA[Understanding the relationship between data science and AI helps us see how modern technology makes smarter decisions. Both fields often work together and support each other in many real world applications. While data science focuses on extracting knowledge from data, AI focuses on creating intelligent systems that can learn and act on their own.]]></summary></entry><entry><title type="html">Fibonacci Numbers with Recursion: A Complete Guide in 7 Languages</title><link href="https://sakibntanmoy006.github.io/blog/2025/11/27/fibonacci-recursion-guide.html" rel="alternate" type="text/html" title="Fibonacci Numbers with Recursion: A Complete Guide in 7 Languages" /><published>2025-11-27T00:00:00+00:00</published><updated>2025-11-27T00:00:00+00:00</updated><id>https://sakibntanmoy006.github.io/blog/2025/11/27/fibonacci-recursion-guide</id><content type="html" xml:base="https://sakibntanmoy006.github.io/blog/2025/11/27/fibonacci-recursion-guide.html"><![CDATA[<p>If you’ve ever wondered how to implement Fibonacci numbers using recursion, you’re in the right place. This classic programming problem is a perfect way to understand recursive functions, and I’ll show you how to solve it in seven popular programming languages: C, C++, Java, Python, PHP, Go, and Ruby.</p>

<h2 id="what-are-fibonacci-numbers">What Are Fibonacci Numbers?</h2>

<p>The Fibonacci sequence is a series of numbers where each number is the sum of the two preceding ones. It starts with 0 and 1, so the sequence goes: 0, 1, 1, 2, 3, 5, 8, 13, 21, and so on. This pattern appears everywhere in nature, from flower petals to spiral galaxies.</p>

<p>The mathematical formula is simple: F(n) = F(n-1) + F(n-2), with base cases F(0) = 0 and F(1) = 1. Recursion is a natural fit for this problem because each Fibonacci number depends on previous ones.</p>

<h2 id="implementation-in-c">Implementation in C</h2>

<p>Let’s start with C, one of the most fundamental programming languages. Here’s how you can implement Fibonacci recursion in C:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Fibonacci of %d is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">));</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The function checks if n is 0 or 1 (base cases), then returns n. Otherwise, it recursively calls itself with n-1 and n-2, adding the results together.</p>

<h2 id="implementation-in-c-1">Implementation in C++</h2>

<p>C++ is similar to C but with object-oriented features. Here’s the recursive Fibonacci in C++:</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>

<span class="kt">int</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Fibonacci of "</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is "</span> <span class="o">&lt;&lt;</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>The logic is identical to C, but we use cout for output instead of printf. The recursive structure remains the same, making it easy to transition between these languages.</p>

<p><img src="/blog/images/fibonacci-recursion-guide-1.jpg" alt="Fibonacci recursion visualization" /></p>

<h2 id="implementation-in-java">Implementation in Java</h2>

<p>Java brings strong typing and object-oriented programming to the table. Here’s the Fibonacci implementation:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Fibonacci</span> <span class="o">{</span>
    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">fibonacci</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="o">)</span> <span class="o">{</span>
            <span class="k">return</span> <span class="n">n</span><span class="o">;</span>
        <span class="o">}</span>
        <span class="k">return</span> <span class="nf">fibonacci</span><span class="o">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="o">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="o">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="o">);</span>
    <span class="o">}</span>
    
    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="nc">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
        <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="o">;</span>
        <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Fibonacci of "</span> <span class="o">+</span> <span class="n">num</span> <span class="o">+</span> <span class="s">" is "</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="o">(</span><span class="n">num</span><span class="o">));</span>
    <span class="o">}</span>
<span class="o">}</span>
</code></pre></div></div>

<p>In Java, we define the function as static so it can be called from the main method without creating an instance. The recursive logic stays consistent across all languages.</p>

<h2 id="implementation-in-python">Implementation in Python</h2>

<p>Python’s clean syntax makes recursive functions incredibly readable. Here’s the Fibonacci implementation:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>

<span class="n">num</span> <span class="o">=</span> <span class="mi">10</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Fibonacci of </span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s"> is </span><span class="si">{</span><span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<p>Python doesn’t need semicolons or curly braces, which makes the code look cleaner. The function definition uses def, and the rest follows the same recursive pattern.</p>

<h2 id="implementation-in-php">Implementation in PHP</h2>

<p>PHP is widely used for web development, and it handles recursion just as well. Here’s how:</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?php</span>
<span class="k">function</span> <span class="n">fibonacci</span><span class="p">(</span><span class="nv">$n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="nv">$n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="nv">$n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="nv">$num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="k">echo</span> <span class="s2">"Fibonacci of </span><span class="nv">$num</span><span class="s2"> is "</span> <span class="mf">.</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$num</span><span class="p">)</span> <span class="mf">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="cp">?&gt;</span>
</code></pre></div></div>

<p>PHP requires the dollar sign ($) before variable names, and functions are defined with the function keyword. The recursive structure is identical to other languages.</p>

<h2 id="implementation-in-go">Implementation in Go</h2>

<p>Go (Golang) is known for its simplicity and performance. Here’s the recursive Fibonacci:</p>

<div class="language-go highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">package</span> <span class="n">main</span>

<span class="k">import</span> <span class="s">"fmt"</span>

<span class="k">func</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="m">1</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="m">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="m">2</span><span class="p">)</span>
<span class="p">}</span>

<span class="k">func</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">num</span> <span class="o">:=</span> <span class="m">10</span>
    <span class="n">fmt</span><span class="o">.</span><span class="n">Printf</span><span class="p">(</span><span class="s">"Fibonacci of %d is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">))</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Go uses explicit type declarations (int) and the := operator for variable initialization. The package and import statements are required for Go programs.</p>

<h2 id="implementation-in-ruby">Implementation in Ruby</h2>

<p>Ruby is elegant and expressive, perfect for recursive functions. Here’s the Fibonacci code:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="k">end</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
<span class="k">end</span>

<span class="n">num</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nb">puts</span> <span class="s2">"Fibonacci of </span><span class="si">#{</span><span class="n">num</span><span class="si">}</span><span class="s2"> is </span><span class="si">#{</span><span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
</code></pre></div></div>

<p>Ruby uses end to close function definitions and if statements. The #{} syntax allows string interpolation, making output statements cleaner.</p>

<h2 id="understanding-the-performance-trade-off">Understanding the Performance Trade-off</h2>

<p>While recursion is elegant, it’s not the most efficient approach for Fibonacci numbers. The recursive solution has exponential time complexity O(2^n) because it recalculates the same values multiple times. For example, calculating F(5) requires calculating F(4) and F(3), but F(4) also calculates F(3) again.</p>

<p>For larger numbers, you’ll want to use dynamic programming or memoization to cache results. However, for learning recursion and understanding how it works, this implementation is perfect.</p>

<h2 id="conclusion">Conclusion</h2>

<p>Recursion is a powerful programming technique, and Fibonacci numbers provide an excellent example of how it works. We’ve explored implementations in C, C++, Java, Python, PHP, Go, and Ruby, and while the syntax differs, the core logic remains the same: define base cases and let the function call itself with smaller inputs.</p>

<p>Try running these examples in your preferred language, experiment with different input values, and see how recursion unfolds. Understanding recursion deeply will make you a better programmer, even if you don’t always use it in production code.</p>

<!-- bn -->

<p>আপনি যদি কখনও ভেবে থাকেন কীভাবে রিকার্শন ব্যবহার করে ফিবোনাচি সংখ্যা বাস্তবায়ন করতে হয়, তাহলে আপনি সঠিক জায়গায় আছেন। এই ক্লাসিক প্রোগ্রামিং সমস্যাটি রিকার্সিভ ফাংশন বোঝার জন্য একটি নিখুঁত উপায়, এবং আমি আপনাকে দেখাব কীভাবে সাতটি জনপ্রিয় প্রোগ্রামিং ভাষায় এটি সমাধান করতে হয়: C, C++, Java, Python, PHP, Go এবং Ruby।</p>

<h2 id="ফিবোনাচি-সংখ্যা-কী">ফিবোনাচি সংখ্যা কী?</h2>

<p>ফিবোনাচি ক্রম হল এমন একটি সংখ্যার সিরিজ যেখানে প্রতিটি সংখ্যা তার আগের দুটি সংখ্যার যোগফল। এটি ০ এবং ১ দিয়ে শুরু হয়, তাই ক্রমটি হয়: ০, ১, ১, ২, ৩, ৫, ৮, ১৩, ২১, এবং এভাবে চলতে থাকে। এই প্যাটার্নটি প্রকৃতিতে সর্বত্র দেখা যায়, ফুলের পাপড়ি থেকে শুরু করে সর্পিল গ্যালাক্সি পর্যন্ত।</p>

<p>গাণিতিক সূত্রটি সহজ: F(n) = F(n-1) + F(n-2), বেস কেস F(0) = 0 এবং F(1) = 1 সহ। রিকার্শন এই সমস্যার জন্য একটি স্বাভাবিক ফিট কারণ প্রতিটি ফিবোনাচি সংখ্যা পূর্ববর্তী সংখ্যাগুলির উপর নির্ভর করে।</p>

<h2 id="c-তে-বাস্তবায়ন">C-তে বাস্তবায়ন</h2>

<p>চলুন C দিয়ে শুরু করি, যা সবচেয়ে মৌলিক প্রোগ্রামিং ভাষাগুলির একটি। এখানে C-তে ফিবোনাচি রিকার্শন কীভাবে বাস্তবায়ন করবেন:</p>

<div class="language-c highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span>
<span class="kt">int</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
    <span class="n">printf</span><span class="p">(</span><span class="s">"Fibonacci of %d is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">));</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>ফাংশনটি পরীক্ষা করে n যদি ০ বা ১ হয় (বেস কেস), তাহলে n রিটার্ন করে। অন্যথায়, এটি n-1 এবং n-2 দিয়ে নিজেকে রিকার্সিভভাবে কল করে এবং ফলাফল যোগ করে।</p>

<h2 id="c-এ-বাস্তবায়ন">C++-এ বাস্তবায়ন</h2>

<p>C++ C-র মতোই কিন্তু অবজেক্ট-ওরিয়েন্টেড বৈশিষ্ট্য সহ। এখানে C++-এ রিকার্সিভ ফিবোনাচি:</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">#include</span> <span class="cpf">&lt;iostream&gt;</span><span class="cp">
</span><span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>

<span class="kt">int</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="kt">int</span> <span class="n">n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
    <span class="n">cout</span> <span class="o">&lt;&lt;</span> <span class="s">"Fibonacci of "</span> <span class="o">&lt;&lt;</span> <span class="n">num</span> <span class="o">&lt;&lt;</span> <span class="s">" is "</span> <span class="o">&lt;&lt;</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
    <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div></div>

<p>লজিকটি C-র মতোই, কিন্তু আমরা printf-এর পরিবর্তে cout ব্যবহার করি আউটপুটের জন্য। রিকার্সিভ স্ট্রাকচার একই থাকে, যা এই ভাষাগুলির মধ্যে রূপান্তর সহজ করে তোলে।</p>

<p><img src="/blog/images/fibonacci-recursion-guide-1.jpg" alt="ফিবোনাচি রিকার্শন ভিজুয়ালাইজেশন" /></p>

<h2 id="java-তে-বাস্তবায়ন">Java-তে বাস্তবায়ন</h2>

<p>Java শক্তিশালী টাইপিং এবং অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং নিয়ে আসে। এখানে ফিবোনাচি বাস্তবায়ন:</p>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">Fibonacci</span> <span class="o">{</span>
    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">int</span> <span class="nf">fibonacci</span><span class="o">(</span><span class="kt">int</span> <span class="n">n</span><span class="o">)</span> <span class="o">{</span>
        <span class="k">if</span> <span class="o">(</span><span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="o">)</span> <span class="o">{</span>
            <span class="k">return</span> <span class="n">n</span><span class="o">;</span>
        <span class="o">}</span>
        <span class="k">return</span> <span class="nf">fibonacci</span><span class="o">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="o">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="o">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="o">);</span>
    <span class="o">}</span>
    
    <span class="kd">public</span> <span class="kd">static</span> <span class="kt">void</span> <span class="nf">main</span><span class="o">(</span><span class="nc">String</span><span class="o">[]</span> <span class="n">args</span><span class="o">)</span> <span class="o">{</span>
        <span class="kt">int</span> <span class="n">num</span> <span class="o">=</span> <span class="mi">10</span><span class="o">;</span>
        <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Fibonacci of "</span> <span class="o">+</span> <span class="n">num</span> <span class="o">+</span> <span class="s">" is "</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="o">(</span><span class="n">num</span><span class="o">));</span>
    <span class="o">}</span>
<span class="o">}</span>
</code></pre></div></div>

<p>Java-তে, আমরা ফাংশনটিকে static হিসেবে ডিফাইন করি যাতে এটি main মেথড থেকে ইনস্ট্যান্স তৈরি না করে কল করা যায়। রিকার্সিভ লজিক সব ভাষায় সামঞ্জস্যপূর্ণ থাকে।</p>

<h2 id="python-এ-বাস্তবায়ন">Python-এ বাস্তবায়ন</h2>

<p>Python-এর পরিষ্কার সিনট্যাক্স রিকার্সিভ ফাংশনগুলিকে অবিশ্বাস্যভাবে পাঠযোগ্য করে তোলে। এখানে ফিবোনাচি বাস্তবায়ন:</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">:</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>

<span class="n">num</span> <span class="o">=</span> <span class="mi">10</span>
<span class="k">print</span><span class="p">(</span><span class="sa">f</span><span class="s">"Fibonacci of </span><span class="si">{</span><span class="n">num</span><span class="si">}</span><span class="s"> is </span><span class="si">{</span><span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="si">}</span><span class="s">"</span><span class="p">)</span>
</code></pre></div></div>

<p>Python-এ সেমিকোলন বা কার্লি ব্রেসের প্রয়োজন নেই, যা কোডকে আরও পরিষ্কার দেখায়। ফাংশন ডেফিনিশনে def ব্যবহার করা হয় এবং বাকিটা একই রিকার্সিভ প্যাটার্ন অনুসরণ করে।</p>

<h2 id="php-তে-বাস্তবায়ন">PHP-তে বাস্তবায়ন</h2>

<p>PHP ওয়েব ডেভেলপমেন্টের জন্য ব্যাপকভাবে ব্যবহৃত হয়, এবং এটি রিকার্শনও ভালোভাবে পরিচালনা করে। এখানে কীভাবে:</p>

<div class="language-php highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="cp">&lt;?php</span>
<span class="k">function</span> <span class="n">fibonacci</span><span class="p">(</span><span class="nv">$n</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="nv">$n</span> <span class="o">&lt;=</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">return</span> <span class="nv">$n</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">);</span>
<span class="p">}</span>

<span class="nv">$num</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
<span class="k">echo</span> <span class="s2">"Fibonacci of </span><span class="nv">$num</span><span class="s2"> is "</span> <span class="mf">.</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="nv">$num</span><span class="p">)</span> <span class="mf">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="cp">?&gt;</span>
</code></pre></div></div>

<p>PHP-তে ভেরিয়েবল নামের আগে ডলার চিহ্ন ($) প্রয়োজন, এবং ফাংশন function কীওয়ার্ড দিয়ে ডিফাইন করা হয়। রিকার্সিভ স্ট্রাকচার অন্য ভাষার মতোই।</p>

<h2 id="go-তে-বাস্তবায়ন">Go-তে বাস্তবায়ন</h2>

<p>Go (Golang) তার সরলতা এবং পারফরম্যান্সের জন্য পরিচিত। এখানে রিকার্সিভ ফিবোনাচি:</p>

<div class="language-go highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">package</span> <span class="n">main</span>

<span class="k">import</span> <span class="s">"fmt"</span>

<span class="k">func</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="kt">int</span><span class="p">)</span> <span class="kt">int</span> <span class="p">{</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="m">1</span> <span class="p">{</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="p">}</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="m">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="o">-</span><span class="m">2</span><span class="p">)</span>
<span class="p">}</span>

<span class="k">func</span> <span class="n">main</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">num</span> <span class="o">:=</span> <span class="m">10</span>
    <span class="n">fmt</span><span class="o">.</span><span class="n">Printf</span><span class="p">(</span><span class="s">"Fibonacci of %d is %d</span><span class="se">\n</span><span class="s">"</span><span class="p">,</span> <span class="n">num</span><span class="p">,</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">))</span>
<span class="p">}</span>
</code></pre></div></div>

<p>Go স্পষ্ট টাইপ ডিক্লেয়ারেশন (int) এবং := অপারেটর ব্যবহার করে ভেরিয়েবল ইনিশিয়ালাইজেশনের জন্য। package এবং import স্টেটমেন্ট Go প্রোগ্রামের জন্য প্রয়োজনীয়।</p>

<h2 id="ruby-তে-বাস্তবায়ন">Ruby-তে বাস্তবায়ন</h2>

<p>Ruby মার্জিত এবং প্রকাশক, রিকার্সিভ ফাংশনের জন্য নিখুঁত। এখানে ফিবোনাচি কোড:</p>

<div class="language-ruby highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">def</span> <span class="nf">fibonacci</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">n</span> <span class="o">&lt;=</span> <span class="mi">1</span>
        <span class="k">return</span> <span class="n">n</span>
    <span class="k">end</span>
    <span class="k">return</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">fibonacci</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">2</span><span class="p">)</span>
<span class="k">end</span>

<span class="n">num</span> <span class="o">=</span> <span class="mi">10</span>
<span class="nb">puts</span> <span class="s2">"Fibonacci of </span><span class="si">#{</span><span class="n">num</span><span class="si">}</span><span class="s2"> is </span><span class="si">#{</span><span class="n">fibonacci</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
</code></pre></div></div>

<p>Ruby ফাংশন ডেফিনিশন এবং if স্টেটমেন্ট বন্ধ করতে end ব্যবহার করে। #{} সিনট্যাক্স স্ট্রিং ইন্টারপোলেশন অনুমতি দেয়, যা আউটপুট স্টেটমেন্ট পরিষ্কার করে।</p>

<h2 id="পারফরম্যান্স-ট্রেড-অফ-বোঝা">পারফরম্যান্স ট্রেড-অফ বোঝা</h2>

<p>যদিও রিকার্শন মার্জিত, এটি ফিবোনাচি সংখ্যার জন্য সবচেয়ে দক্ষ পদ্ধতি নয়। রিকার্সিভ সমাধানের এক্সপোনেনশিয়াল টাইম কমপ্লেক্সিটি O(2^n) আছে কারণ এটি একই মান বারবার পুনরায় গণনা করে। উদাহরণস্বরূপ, F(5) গণনা করতে F(4) এবং F(3) গণনা করতে হয়, কিন্তু F(4) আবার F(3) গণনা করে।</p>

<p>বড় সংখ্যার জন্য, আপনি ফলাফল ক্যাশ করতে ডায়নামিক প্রোগ্রামিং বা মেমোইজেশন ব্যবহার করতে চাইবেন। তবে, রিকার্শন শেখার এবং এটি কীভাবে কাজ করে তা বোঝার জন্য, এই বাস্তবায়নটি নিখুঁত।</p>

<h2 id="উপসংহার">উপসংহার</h2>

<p>রিকার্শন একটি শক্তিশালী প্রোগ্রামিং কৌশল, এবং ফিবোনাচি সংখ্যা এটি কীভাবে কাজ করে তার একটি চমৎকার উদাহরণ প্রদান করে। আমরা C, C++, Java, Python, PHP, Go এবং Ruby-তে বাস্তবায়ন অন্বেষণ করেছি, এবং যদিও সিনট্যাক্স ভিন্ন, মূল লজিক একই থাকে: বেস কেস ডিফাইন করুন এবং ফাংশনটিকে ছোট ইনপুট দিয়ে নিজেকে কল করতে দিন।</p>

<p>আপনার পছন্দের ভাষায় এই উদাহরণগুলি চালানোর চেষ্টা করুন, বিভিন্ন ইনপুট মান নিয়ে পরীক্ষা করুন এবং দেখুন কীভাবে রিকার্শন উন্মোচিত হয়। রিকার্শন গভীরভাবে বোঝা আপনাকে একজন ভালো প্রোগ্রামার বানাবে, এমনকি আপনি সবসময় প্রোডাকশন কোডে এটি ব্যবহার না করলেও।</p>]]></content><author><name>Sakib Nawar Tanmoy</name></author><category term="blog" /><category term="programming" /><category term="recursion" /><category term="fibonacci" /><category term="algorithms" /><summary type="html"><![CDATA[If you’ve ever wondered how to implement Fibonacci numbers using recursion, you’re in the right place. This classic programming problem is a perfect way to understand recursive functions, and I’ll show you how to solve it in seven popular programming languages: C, C++, Java, Python, PHP, Go, and Ruby.]]></summary></entry></feed>