मान लीजिए कि हमारे पास तीन संख्याएँ 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) लौटाता है।
इस पुनरावृत्ति का अनुसरण करके हमें 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
- तो अब एस(5) =10 + 3 + 2 =15
- और एस(6) =15 + 10 + 3 =28
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
एक फ़ंक्शन हल करें () को परिभाषित करें, इसमें a, b, c, n,
लगेगा- यदि n 1 के समान है, तो:
- एक वापसी
- यदि n 2 के समान है, तो:
- वापसी ख
- यदि n 3 के समान है, तो:
- वापसी सी
- रिटर्न सॉल्व ((ए, बी, सी, एन -1) + सॉल्व (ए, बी, सी, एन - 2) + सॉल्व (ए, बी, सी, एन - 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