মডিউল ১৭-৩ঃ Print From 1 to n Using Recursion
Code:
#include<stdio.h>
void fun(int i,int n)
{
if(i==n+1) return; // Base case
printf("%d\n",i);
fun(i+1,n);
}
int main()
{
int n;
scanf("%d",&n);
fun(1,n);
return 0;
}যদি n=3 হয়, তাহলে প্রোগ্রাম যেভাবে কাজ করবে তা নিচে দেখানো হলো:
scanf("%d",&n);দ্বারা প্রোগ্রাম n এর মান প্রাপ্ত করে। এখানে n=3 হলে, এটি একেবারে নিচের মতো হবে:n = 3fun(1,n);কল হবে এবং সাথে দুটি আর্গুমেন্ট পাঠানো হবে i=1 এবং n=3।fun()ফাংশনের মধ্যে,i=1এবংn=3হিসেবে প্যারামিটার পাস হয়েছে।শুরুতে ফাংশনের ভেতরে যাওয়া হবে,
if(i==n+1) return;শর্ত চেক করে, যে যদিiএর মান n+1 এর সমান হয়, তাহলে ফাংশন থেকে বের হয়ে যাওয়া হবে। এখানে i=1 এবং n=3, সুতরাং এই শর্ত পূরণ হবে না।পরবর্তী লাইনে,
printf("%d\n",i);দ্বারা i এর মান 1 প্রিন্ট করা হবে এবং নতুন লাইনে চলে আসবে। এই সময় আউটপুট হবে:1পরবর্তী লাইনে,
fun(i+1,n);দ্বারা ফাংশনকে নিজেকে নিজের মধ্যে কল করা হবে প্যারামিটার i এর মান এক বাড়িয়ে এবং এই সময় i=2 হবে।আবার ফাংশনে প্রবেশ হবে, এবং এইবার প্রথম লাইনের শর্ত চেক হবে। যে প্রথম আগের প্রোগ্রামে এই শর্ত পূরণ হবে না।
এখন
printf("%d\n",i);লাইনে i এর মান 2 প্রিন্ট হবে এবং নতুন লাইনে চলে আসবে। আউটপুট হবে:1 2আবার ফাংশনকে কল করে i এর মান 3 প্রিন্ট হবে এবং ফাংশন থেকে বের হয়ে আসা হবে কারণ i এর মান এখন n+1 এর সমান হয়েছে। আউটপুট হবে:
1 2 3সবশেষে, মেইন ফাংশনে রিটার্ন ০ করে প্রোগ্রাম শেষ হবে।
Last updated