జావా భాషలో ఫైబొనాక్సీ సంఖ్యలు

Java Bhasalo Phaibonaksi Sankhyalu



ఫైబొనాక్సీ సంఖ్యలు ధనాత్మక (పూర్తి) పూర్ణాంకాల యొక్క నిర్దిష్ట క్రమం, సున్నా నుండి సానుకూల అనంతం వరకు. ప్రస్తుత ఫిబొనాక్సీ సంఖ్య వెంటనే మునుపటి రెండు ఫిబొనాక్సీ సంఖ్యలను జోడించడం ద్వారా పొందబడుతుంది. తక్షణ మునుపటి రెండు ఫిబొనాక్సీ సంఖ్యలు కేవలం ఏ సంఖ్యలు కాదు.

నిజానికి, మొదటి రెండు ఫైబొనాక్సీ సంఖ్యలు ముందే నిర్వచించబడ్డాయి. మొదటి ఫిబొనాక్సీ సంఖ్య 0 మరియు రెండవ ఫిబొనాక్సీ సంఖ్య 1. సున్నా-ఆధారిత సూచికతో మరియు ఫిబొనాక్సీ సంఖ్యలు ఒక శ్రేణిలో ఉన్నాయని ఊహిస్తే, అప్పుడు:

ఇండెక్స్ వద్ద 0 , ఫైబొనాక్సీ సంఖ్య 0 , ( ముందే నిర్వచించబడింది ) ;

ఇండెక్స్ వద్ద 1 , ఫైబొనాక్సీ సంఖ్య 1 , ( ముందే నిర్వచించబడింది ) ;

ఇండెక్స్ వద్ద రెండు , ఫైబొనాక్సీ సంఖ్య 1 = 1 + 0 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 3 , ఫైబొనాక్సీ సంఖ్య రెండు = 1 + 1 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 4 , ఫైబొనాక్సీ సంఖ్య 3 = రెండు + 1 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 5 , ఫైబొనాక్సీ సంఖ్య 5 = 3 + రెండు , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 6 , ఫైబొనాక్సీ సంఖ్య 8 = 5 + 3 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 7 , ఫైబొనాక్సీ సంఖ్య 13 = 8 + 5 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 8 , ఫైబొనాక్సీ సంఖ్య ఇరవై ఒకటి = 13 + 8 , ( నిర్వచనం ప్రకారం ) ;

ఇండెక్స్ వద్ద 9 , ఫైబొనాక్సీ సంఖ్య 3. 4 = ఇరవై ఒకటి + 13 , ( నిర్వచనం ప్రకారం ) ;

మరియు అందువలన న.







ప్రోగ్రామింగ్‌లో, ఈ ఫైబొనాక్సీ సంఖ్యల కోసం సున్నా-ఆధారిత సూచికల కోసం వేరియబుల్ n మరియు i కాదు. మరియు దానితో, మొదటి పన్నెండు ఫిబొనాక్సీ సంఖ్యలు:



0 1 1 రెండు 3 5 8 13 ఇరవై ఒకటి 3. 4 55 89
0 1 రెండు 3 4 5 6 7 8 9 10 పదకొండు

పట్టికలోని రెండవ వరుస సున్నా-ఆధారిత సూచికలను ఇస్తుంది, వీటిలో ప్రతి ఒక్కటి ప్రోగ్రామింగ్‌లో వేరియబుల్ nని కలిగి ఉంటుంది. మొదటి వరుస సంబంధిత ఫైబొనాక్సీ సంఖ్యలను ఇస్తుంది. కాబట్టి, ఫైబొనాక్సీ సంఖ్యలు కేవలం ఏ సంఖ్యలు కాదు. ప్రధాన నిర్వచనం మొదటి ఫిబొనాక్సీ సంఖ్యకు 0 మరియు రెండవ ఫిబొనాక్సీ సంఖ్యకు 1తో ప్రారంభమవుతుంది. మిగిలిన సంఖ్యలు అక్కడ నుండి ఉత్పత్తి చేయబడతాయి.



ఫైబొనాక్సీ సంఖ్యలను O(n) సమయంలో మరియు O(1) సమయంలో కూడా ఉత్పత్తి చేయవచ్చు. O(n) సమయానికి, ఉదాహరణకు n 12 అయితే, మొదటి పన్నెండు ఫిబొనాక్సీ సంఖ్యలు ఉత్పత్తి చేయబడతాయి. O(1) సమయానికి, ఒక ఫైబొనాక్సీ సంఖ్య మాత్రమే ఉత్పత్తి చేయబడుతుంది. ఉదాహరణకు, n 6 అయితే, ఫైబొనాక్సీ సంఖ్య 8 ఉత్పత్తి అవుతుంది.





ఈ వ్యాసం జావాలో ఫైబొనాక్సీ సంఖ్యలను ఉత్పత్తి చేసే ఈ రెండు మార్గాలను వివరిస్తుంది.

ఫైబొనాక్సీ సంఖ్య కోసం ఫార్ములా

ఫైబొనాక్సీ సంఖ్యకు గణిత సూత్రం ఉంది. ఈ సూత్రాన్ని మూడు పంక్తులు లేదా ఒక పంక్తిలో వ్రాయవచ్చు. మూడు లైన్లలో, ఇది ఇలా వ్రాయబడింది:

ఎక్కడ ఎఫ్ n సున్నా-ఆధారిత n వద్ద ఉన్న ఫైబొనాక్సీ సంఖ్య సూచిక ఈ విధంగా ఫైబొనాక్సీ సంఖ్య నిర్వచించబడింది.



O(n) సమయంలో ఫైబొనాక్సీ సంఖ్యలను ఉత్పత్తి చేయడం

ఫిబొనాక్సీ సంఖ్యలు O(3) సమయాలలో ఉత్పత్తి చేయబడితే, సంఖ్యలు, 0, 1, 1 ఉత్పత్తి చేయబడతాయి; అవి మొదటి మూడు ఫిబొనాక్సీ సంఖ్యలు. చివరి సున్నా-ఆధారిత n ఇక్కడ సూచిక, 2. ఫిబొనాక్సీ సంఖ్యలను O(7) సమయాల్లో ఉత్పత్తి చేయాలంటే, 0, 1, 1, 2, 3, 5, 8 సంఖ్యలు ఉత్పత్తి చేయబడతాయి; అవి మొదటి ఏడు ఫిబొనాక్సీ సంఖ్యలు. చివరి సున్నా-ఆధారిత n ఇక్కడ సూచిక, 6. ఫిబొనాక్సీ సంఖ్యలను O(n) సమయాల్లో ఉత్పత్తి చేయాలంటే, 0, 1, 1, 2, 3, 5, 8 – – -, సంఖ్యలు ఉత్పత్తి చేయబడతాయి; అవి మొదటి n ఫైబొనాక్సీ సంఖ్యలు. చివరి సున్నా-ఆధారిత n ఇక్కడ సూచిక n-1.

మొదటి n ఫైబొనాక్సీ సంఖ్యలను ఉత్పత్తి చేయడానికి తరగతిలోని జావా పద్ధతి:

తరగతి ఫైబొనాక్సీ {
శూన్యం ఫైబొనాక్సీ ( int [ ] పి ) {
int n = పి. పొడవు ;
ఉంటే ( n > 0 )
పి [ 0 ] = 0 ;
ఉంటే ( n > 1 )
పి [ 1 ] = 1 ;
కోసం ( int i = రెండు ; i < n ; i ++ ) { //n=0 మరియు n=2 పరిగణించబడ్డాయి
int curr No = పి [ i - 1 ] + పి [ i - రెండు ] ;
పి [ i ] = curr No ;
}
}
}

క్లాస్, Fibonacci ప్రైవేట్. ది ఫైబొనాక్సీ() పద్ధతి P శ్రేణిని తీసుకుంటుంది మరియు శూన్యతను అందిస్తుంది. శ్రేణి యొక్క పొడవును నిర్ణయించడం ద్వారా పద్ధతి ప్రారంభమవుతుంది. n యొక్క ఈ పొడవు అవసరమైన ఫిబొనాక్సీ సంఖ్యల సంఖ్య. మొదటి మరియు రెండవ ఫైబొనాక్సీ సంఖ్యలు స్పష్టంగా నిర్ణయించబడతాయి మరియు శ్రేణిలో మొదటి మరియు రెండవ స్థానాల్లో ఉంచబడతాయి.

మూడవ (సూచిక, n = 2) నుండి ప్రారంభమయ్యే మిగిలిన ఫైబొనాక్సీ సంఖ్యలు ఫర్-లూప్‌లో నిర్ణయించబడతాయి మరియు శ్రేణిలో వాటి స్థానాల్లో ఉంచబడతాయి. కాబట్టి, ఫంక్షన్ శూన్యతను తిరిగి ఇవ్వాలి. ఫర్-లూప్‌లోని ప్రధాన ప్రకటన మునుపటి రెండు సంఖ్యలను జోడిస్తుంది.

ఇండెక్స్ వేరియబుల్, i, స్పష్టత కోసం nకి బదులుగా ఉపయోగించబడింది.

తగిన జావా ప్రధాన తరగతి (జావా ప్రధాన పద్ధతితో):

ప్రజా తరగతి ప్రధాన {
ప్రజా స్థిరమైన శూన్యం ప్రధాన ( స్ట్రింగ్ ఆర్గ్స్ [ ] ) {
int m = 12 ;
int [ ] అరె = కొత్త int [ m ] ;
ఫైబొనాక్సీ obj = కొత్త ఫైబొనాక్సీ ( ) ;
obj ఫైబొనాక్సీ ( అరె ) ;
కోసం ( int i = 0 ; i < m ; i ++ )
వ్యవస్థ . బయటకు . ముద్రణ ( అరె [ i ] + '' ) ;
వ్యవస్థ . బయటకు . println ( ) ;
}
}

ఫిబొనాక్సీ() పద్ధతి ద్వారా సంఖ్యలను రూపొందించిన తర్వాత, జావా ప్రధాన పద్ధతి వాటిని చదువుతుంది.

స్థిరమైన సమయంలో ఒక ఫైబొనాక్సీ సంఖ్యను ఉత్పత్తి చేస్తోంది

సంబంధిత సున్నా-ఆధారిత సూచిక, n ఇచ్చినప్పుడు, ఫైబొనాక్సీ సంఖ్యను ఉత్పత్తి చేయడానికి ఉపయోగించే గణిత సూత్రం ఉంది. సూత్రం:

ఇక్కడ n అనేది సున్నా-ఆధారిత సూచిక మరియు Fib n సంబంధిత ఫైబొనాక్సీ సంఖ్య. సమీకరణం యొక్క కుడి వైపున, అది పవర్ nకి పెంచబడిన 5 యొక్క వర్గమూలం కాదని గమనించండి; ఇది కుండలీకరణాల్లోని వ్యక్తీకరణ శక్తి nకి పెంచబడుతుంది. అలాంటి వ్యక్తీకరణలు రెండు ఉన్నాయి.

n 0 అయితే, Fib n 0 అవుతుంది. n 1 అయితే, Fib n 1 అవుతుంది. n 2 అయితే, Fib n 1 అవుతుంది. n 3 అయితే, Fib n 2 అవుతుంది. n 4 అయితే, Fib n 3 ఉంటుంది - మరియు మొదలైనవి. రీడర్ ఈ ఫార్ములాను గణితశాస్త్రంలో ధృవీకరించవచ్చు, n కోసం వివిధ విలువలను ప్రత్యామ్నాయం చేయడం మరియు మూల్యాంకనం చేయడం ద్వారా.

కోడ్ చేసినప్పుడు, ఈ ఫార్ములా n కోసం కేవలం ఒక ఫైబొనాక్సీ సంఖ్యను ఉత్పత్తి చేస్తుంది. ఒకటి కంటే ఎక్కువ ఫైబొనాక్సీ సంఖ్యలు అవసరమైతే, ఫార్ములా కోసం కోడ్‌ని వేర్వేరు సంబంధిత సూచికలకు ఒకసారి కాల్ చేయాలి.

జావాలో, కేవలం ఒక ఫైబొనాక్సీ సంఖ్యను ఉత్పత్తి చేసే పద్ధతి:

దిగుమతి java.lang.* ;

తరగతి ఫిబ్ {
రెట్టింపు fibNo ( int n ) {
రెట్టింపు FibN = ( గణితం . పావు ( ( 1 + గణితం . ( 5 ) ) / రెండు , n ) గణితం . పావు ( ( 1 - గణితం . ( 5 ) ) / రెండు , n ) ) / గణితం . ( 5 ) ;
తిరిగి FibN ;
}
}

ప్రోగ్రామ్ ప్రారంభంలో java.lang.* ప్యాకేజీని దిగుమతి చేసుకోవాలి. ఎందుకంటే ప్యాకేజీలో గణిత తరగతి ఉంది, ఇది పవర్ (పౌ) మరియు వర్గమూలం (sqrt) పద్ధతులను కలిగి ఉంటుంది. ఇక్కడ కస్టమ్ జావా పద్ధతి నేరుగా గణిత సూత్రాన్ని అమలు చేస్తుంది.

ఈ ఫంక్షన్ యొక్క సమయ సంక్లిష్టత O(1), ఒక ప్రధాన ఆపరేషన్ యొక్క స్థిరమైన టేమ్. పై పద్ధతికి జావా ప్రధాన పద్ధతితో తగిన జావా మెయిన్ క్లాస్:

ప్రజా తరగతి ప్రధాన {
ప్రజా స్థిరమైన శూన్యం ప్రధాన ( స్ట్రింగ్ ఆర్గ్స్ [ ] ) {
int ఎన్ = పదకొండు ;
Fib obj = కొత్త ఫిబ్ ( ) ;
రెట్టింపు కుడి = obj fibNo ( ఎన్ ) ;
వ్యవస్థ . బయటకు . println ( కుడి ) ;
}
}

సూచిక n = 11 పంపబడింది మరియు ఫైబొనాక్సీ సంఖ్య, 89 తిరిగి ఇవ్వబడుతుంది. అవుట్‌పుట్:

89.00000000000003

అనవసరమైన దశాంశ అంకెలను తీసివేయవచ్చు, కానీ అది కొంత సమయం కోసం చర్చ.

ముగింపు

ఫైబొనాక్సీ సంఖ్యలు పూర్ణ సంఖ్యల యొక్క నిర్దిష్ట క్రమం. ప్రస్తుత సంఖ్యను పొందడానికి, వెంటనే మునుపటి రెండు సంబంధిత సంఖ్యలను జోడించండి. మొదటి రెండు ఫిబొనాక్సీ సంఖ్యలు, 0 తర్వాత 1, మొత్తం సీక్వెన్స్ కోసం ముందుగా ప్రకటించబడ్డాయి. మిగిలిన ఫైబొనాక్సీ సంఖ్యలు అక్కడ నుండి ఉత్పత్తి చేయబడతాయి.

ఇండెక్స్ 2 నుండి ఫిబొనాక్సీ సంఖ్యలను ఉత్పత్తి చేయడానికి, ఇండెక్స్ n-1కి అనుగుణంగా, ప్రిన్సిపల్ స్టేట్‌మెంట్‌తో ఫర్-లూప్‌ని ఉపయోగించండి:

int curr No = పి [ i - 1 ] + పి [ నేను - రెండు ] ;

ఇక్కడ currNo అనేది ప్రస్తుత ఫైబొనాక్సీ సంఖ్య మరియు P అనేది n సంఖ్యలను నిల్వ చేయడానికి శ్రేణి.

ఏదైనా సున్నా-ఆధారిత సూచిక n నుండి కేవలం ఒక ఫైబొనాక్సీ సంఖ్యను ఉత్పత్తి చేయడానికి, గణిత సూత్రాన్ని ఉపయోగించండి: