"রিকার্সিভ ফাংশন" হল এমন কিছু যা ফাংশন বডির ভেতরে নিজেই আবার কল করে।
উদাহরণস্বরূপ,
একটি fact() ফাংশন, যা একটি পূর্ণসংখ্যা 'N'-এর ফ্যাক্টোরিয়াল কম্পিউট করে, যা ১ থেকে N পর্যন্ত সব পূর্ণসংখ্যার গুণফল।
১ (অথবা) ০ আর্গুমেন্ট সহ fact(), ফাংশন ১ রিটার্ন করে। অন্যথায়, এটি n*fact(n-1) রিটার্ন করে, এটি 'n' ১ হওয়া পর্যন্ত চলতে থাকে।
Fact(5) = 5*fact(4) = 5*4*3*fact(3) = 5*4*3*2*fact(2) = 5*4*3*2*1 fact(1) = 5*4*3*2*1 = 120.
উদাহরণ
রিকার্সিভ ফাংশন ব্যবহার করে একটি সংখ্যা উল্টো করার C প্রোগ্রাম নিচে দেওয়া হল:
#includemain(){ int n, f; int fact(int); clrscr(); printf("একটি সংখ্যা লিখুন"); scanf("%d", &n); f = fact(n); printf("ফ্যাক্টোরিয়াল ভ্যালু = %d", f); } int fact(int n){ int f; if((n == 1) || (n == 0)) return 1; else f = n * fact(n - 1); return f; }
আউটপুট
আউটপুট নিচে দেওয়া হল:
একটি সংখ্যা লিখুন 5 ফ্যাক্টোরিয়াল ভ্যালু = 120
নিচে আরেকটি C প্রোগ্রাম দেওয়া হল রিকার্সিভ ফাংশন ব্যবহার করে দেওয়া সংখ্যা রিভার্স করার:
#includeint sum = 0, rem; int main(){ int num, revNum; printf("সংখ্যা লিখুন:\n"); scanf("%d", &num); revNum = revNumFunction(num); // সংখ্যা উল্টো করার ফাংশন কল printf("উল্টো করার পর সংখ্যা: %d", revNum); return 0; } revNumFunction(int num){ if(num){ rem = num % 10; sum = sum * 10 + rem; revNum(num / 10); } else return sum; }
আউটপুট
আউটপুট নিম্নরূপ:
সংখ্যা লিখুন: 1357 উল্টো করার পর সংখ্যা: 7531