ধরুন আমাদের তিনটি সংখ্যা a, b, c এবং একটি মান n আছে। আমরা একটি পুনরাবৃত্তি সূত্র S(n) −
অনুসরণ করি- S(1) একটি ফেরত দেয়
- S(2) ফেরত দেয় b
- S(3) ফেরত দেয় c
- S(n) সকল n> 3 এর জন্য S(n-1) + S(n-2) + S(n-3) প্রদান করে।
এই পুনরাবৃত্তি অনুসরণ করে আমাদের nম পদ খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট হয় a =5, b =2, c =3, n =6, তাহলে আউটপুট হবে 28 কারণ −
- S(6) =S(5) + S(4) + S(3)
- S(5) =S(4) + S(3) + S(2)
- S(4) =S(3) + S(2) + S(1) =3 + 2 + 5 =10
- তাই এখন S(5) =10 + 3 + 2 =15
- এবং S(6) =15 + 10 + 3 =28
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
একটি ফাংশন solve() সংজ্ঞায়িত করুন, এটি a, b, c, n,
লাগবে- যদি n 1 এর মত হয়, তাহলে:
- একটি ফেরত দিন
- যদি n 2 এর মত হয়, তাহলে:
- ফেরত b
- যদি n 3 এর মত হয়, তাহলে:
- রিটার্ন c
- রিটার্ন সলভ((a, b, c, n - 1) + solve(a, b, c, n - 2) + solve(a, b, c, n - 3))
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <stdio.h> int solve(int a, int b, int c, int n){ if(n == 1) return a; if(n == 2) return b; if(n == 3) return c; return solve(a, b, c, n-1) + solve(a, b, c, n-2) + solve(a, b, c, n-3); } int main(){ int a = 5, b = 2, c = 3, n = 6; int res = solve(a, b, c, n); printf("%d", res); }
ইনপুট
5, 2, 3, 6
আউটপুট
28