তিনটি সংখ্যা a, b, c এবং একটি মান n দেওয়া থাকলে, নিচের রিকারেন্স রিলেশন অনুযায়ী nth টার্ম বের করতে হবে:
- S(1) = a
- S(2) = b
- S(3) = c
- S(n) = S(n-1) + S(n-2) + S(n-3) for n > 3
উদাহরণ
ইনপুট: a = 5, b = 2, c = 3, n = 6
S(4) = 3+2+5 = 10
S(5) = 10+3+2 = 15
S(6) = 15+10+3 = 28
আউটপুট: 28
এলগরিদম
- রিকার্সিভ ফাংশন
solve(a, b, c, n)লিখুন। - বেস কেস:
n==1→ a,n==2→ b,n==3→ c। - রিকার্সিভ কেস:
return solve(a,b,c,n-1) + solve(a,b,c,n-2) + solve(a,b,c,n-3)। - নোট: বড়
n-এর জন্য এটি ধীর হবে; ডাইনামিক প্রোগ্রামিং বা ইটারেটিভ পদ্ধতি দ্রুত হবে।
C কোড উদাহরণ
#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);
return 0;
}
ইনপুট ও আউটপুট
ইনপুট: 5, 2, 3, 6
আউটপুট: 28