मान लीजिए हमारे पास तीन संख्याएं a, b, c और एक मान n है। हम एक पुनरावृत्ति सूत्र S(n) का पालन करते हैं:
- S(1) a वापस करता है
- S(2) b वापस करता है
- S(3) c वापस करता है
- S(n) सभी n > 3 के लिए S(n-1) + S(n-2) + S(n-3) वापस करता है।
हमें इस पुनरावृत्ति का पालन करके nth पद ज्ञात करना है।
उदाहरण के लिए, यदि इनपुट 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 के समान है, तो 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)
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#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