ஜாவா மொழியில் ஃபைபோனச்சி எண்கள்

Java Moliyil Hpaiponacci Enkal



Fibonacci எண்கள் என்பது நேர்மறை (முழு) முழு எண்களின் ஒரு குறிப்பிட்ட வரிசையாகும், பூஜ்ஜியத்தில் இருந்து நேர்மறை முடிவிலி வரை. தற்போதைய Fibonacci எண், உடனடியாக முந்தைய இரண்டு Fibonacci எண்களைச் சேர்ப்பதன் மூலம் பெறப்படுகிறது. உடனடி முந்தைய இரண்டு Fibonacci எண்கள் வெறும் எண்கள் அல்ல.

உண்மையில், முதல் இரண்டு Fibonacci எண்கள் முன் வரையறுக்கப்பட்டவை. முதல் Fibonacci எண் 0 மற்றும் இரண்டாவது Fibonacci எண் 1. பூஜ்ஜிய அடிப்படையிலான அட்டவணைப்படுத்தல் மற்றும் Fibonacci எண்கள் ஒரு வரிசையில் இருப்பதாகக் கருதினால், பின்:

குறியீட்டில் 0 , Fibonacci எண் 0 , ( முன் வரையறுக்கப்பட்ட ) ;

குறியீட்டில் 1 , Fibonacci எண் 1 , ( முன் வரையறுக்கப்பட்ட ) ;

குறியீட்டில் இரண்டு , Fibonacci எண் 1 = 1 + 0 , ( வரையறையின்படி ) ;

குறியீட்டில் 3 , Fibonacci எண் இரண்டு = 1 + 1 , ( வரையறையின்படி ) ;

குறியீட்டில் 4 , Fibonacci எண் 3 = இரண்டு + 1 , ( வரையறையின்படி ) ;

குறியீட்டில் 5 , Fibonacci எண் 5 = 3 + இரண்டு , ( வரையறையின்படி ) ;

குறியீட்டில் 6 , Fibonacci எண் 8 = 5 + 3 , ( வரையறையின்படி ) ;

குறியீட்டில் 7 , Fibonacci எண் 13 = 8 + 5 , ( வரையறையின்படி ) ;

குறியீட்டில் 8 , Fibonacci எண் இருபத்து ஒன்று = 13 + 8 , ( வரையறையின்படி ) ;

குறியீட்டில் 9 , Fibonacci எண் 3. 4 = இருபத்து ஒன்று + 13 , ( வரையறையின்படி ) ;

மற்றும் பல.







நிரலாக்கத்தில், இந்த Fibonacci எண்களுக்கான பூஜ்ஜிய அடிப்படையிலான குறியீடுகளுக்கு n, மற்றும் i அல்ல என்ற மாறி பயன்படுத்தப்படுகிறது. அதனுடன், முதல் பன்னிரண்டு ஃபைபோனச்சி எண்கள்:



0 1 1 இரண்டு 3 5 8 13 இருபத்து ஒன்று 3. 4 55 89
0 1 இரண்டு 3 4 5 6 7 8 9 10 பதினொரு

அட்டவணையில் உள்ள இரண்டாவது வரிசை பூஜ்ஜிய அடிப்படையிலான குறியீடுகளைக் கொடுக்கிறது, ஒவ்வொன்றும் நிரலாக்கத்தில் n மாறியைக் கொண்டிருக்கும். முதல் வரிசையில் தொடர்புடைய ஃபைபோனச்சி எண்களைக் கொடுக்கிறது. எனவே, Fibonacci எண்கள் வெறும் எண்கள் அல்ல. முதல் ஃபைபோனச்சி எண்ணுக்கு 0 மற்றும் இரண்டாவது ஃபைபோனச்சி எண்ணுக்கு 1 என முக்கிய வரையறை தொடங்குகிறது. மீதமுள்ள எண்கள் அங்கிருந்து தயாரிக்கப்படுகின்றன.



Fibonacci எண்களை O(n) நேரத்திலும் O(1) நேரத்திலும் உருவாக்கலாம். O(n) நேரத்திற்கு, உதாரணமாக n 12 ஆக இருந்தால், முதல் பன்னிரெண்டு Fibonacci எண்கள் உருவாக்கப்படும். O(1) நேரத்திற்கு, ஒரு Fibonacci எண் மட்டுமே உற்பத்தி செய்யப்படுகிறது. எடுத்துக்காட்டாக, n 6 எனில், ஃபிபோனச்சி எண் 8 உருவாக்கப்படும்.





ஜாவாவில் ஃபைபோனச்சி எண்களை உருவாக்கும் இந்த இரண்டு வழிகளை இந்தக் கட்டுரை விளக்குகிறது.

ஃபைபோனச்சி எண்ணுக்கான சூத்திரம்

ஃபைபோனச்சி எண்ணுக்கு ஒரு கணித சூத்திரம் உள்ளது. இந்த சூத்திரத்தை மூன்று வரிகளில் அல்லது ஒரு வரியில் எழுதலாம். மூன்று வரிகளில், இது பின்வருமாறு எழுதப்பட்டுள்ளது:

அங்கு எஃப் n பூஜ்ஜிய அடிப்படையிலான n இல் உள்ள Fibonacci எண் வது குறியீட்டு. இப்படித்தான் Fibonacci எண் வரையறுக்கப்படுகிறது.



O(n) நேரத்தில் Fibonacci எண்களை உருவாக்குதல்

ஃபைபோனச்சி எண்களை 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 ஃபைபோனச்சி எண்களை உருவாக்க ஒரு வகுப்பில் உள்ள ஜாவா முறை:

வர்க்கம் ஃபைபோனச்சி {
வெற்றிடமானது ஃபைபோனச்சி ( முழு எண்ணாக [ ] பி ) {
முழு எண்ணாக n = பி. நீளம் ;
என்றால் ( n > 0 )
பி [ 0 ] = 0 ;
என்றால் ( n > 1 )
பி [ 1 ] = 1 ;
க்கான ( முழு எண்ணாக நான் = இரண்டு ; நான் < n ; நான் ++ ) { //n=0 மற்றும் n=2 பரிசீலிக்கப்பட்டது
முழு எண்ணாக currNo = பி [ நான் - 1 ] + பி [ நான் - இரண்டு ] ;
பி [ நான் ] = currNo ;
}
}
}

வகுப்பு, Fibonacci தனிப்பட்டது. தி ஃபைபோனச்சி() முறை P வரிசையை எடுத்து வெற்றிடத்தை வழங்குகிறது. வரிசையின் நீளத்தை தீர்மானிப்பதன் மூலம் முறை தொடங்குகிறது. n இன் இந்த நீளம் தேவைப்படும் ஃபைபோனச்சி எண்களின் எண்ணிக்கை. முதல் மற்றும் இரண்டாவது ஃபைபோனச்சி எண்கள் வெளிப்படையாகத் தீர்மானிக்கப்பட்டு வரிசையில் முதல் மற்றும் இரண்டாவது நிலைகளில் வைக்கப்படுகின்றன.

மூன்றாவது (குறியீடு, n = 2) இலிருந்து தொடங்கும் மீதமுள்ள Fibonacci எண்கள் ஃபார்-லூப்பில் தீர்மானிக்கப்பட்டு, அணிவரிசையில் அவற்றின் நிலைகளில் வைக்கப்படுகின்றன. எனவே, செயல்பாடு வெற்றிடத்தை திரும்பப் பெற வேண்டும். ஃபார்-லூப்பில் உள்ள முதன்மை அறிக்கை முந்தைய இரண்டு எண்களைச் சேர்க்கிறது.

குறியீட்டு மாறி, i, n க்கு பதிலாக, தெளிவு நோக்கத்திற்காக பயன்படுத்தப்பட்டது.

பொருத்தமான ஜாவா முதன்மை வகுப்பு (ஜாவா பிரதான முறையுடன்)

பொது வர்க்கம் முக்கிய {
பொது நிலையான வெற்றிடமானது முக்கிய ( லேசான கயிறு args [ ] ) {
முழு எண்ணாக மீ = 12 ;
முழு எண்ணாக [ ] arr = புதிய முழு எண்ணாக [ மீ ] ;
Fibonacci obj = புதிய ஃபைபோனச்சி ( ) ;
obj. ஃபைபோனச்சி ( arr ) ;
க்கான ( முழு எண்ணாக நான் = 0 ; நான் < மீ ; நான் ++ )
அமைப்பு . வெளியே . அச்சு ( arr [ நான் ] + '' ) ;
அமைப்பு . வெளியே . println ( ) ;
}
}

ஃபைபோனச்சி () முறை மூலம் எண்கள் உருவாக்கப்பட்ட பிறகு, ஜாவா பிரதான முறை அவற்றைப் படிக்கிறது.

நிலையான நேரத்தில் ஒரு Fibonacci எண்ணை உருவாக்குதல்

ஃபைபோனச்சி எண்ணை உருவாக்க ஒரு கணித சூத்திரம் உள்ளது, அதற்குரிய பூஜ்ஜிய அடிப்படையிலான குறியீட்டை n கொடுக்கும்போது. சூத்திரம்:

இதில் n என்பது பூஜ்ஜிய அடிப்படையிலான குறியீடு மற்றும் Fib n தொடர்புடைய Fibonacci எண். சமன்பாட்டின் வலது புறத்தில், 5 இன் வர்க்கமூலம் அல்ல, சக்தி nக்கு உயர்த்தப்பட்டது என்பதை நினைவில் கொள்க; அடைப்புக்குறிக்குள் உள்ள வெளிப்பாடுதான் சக்தி 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க்கு ஒரு ஃபைபோனச்சி எண்ணை மட்டுமே உருவாக்கும். ஒன்றுக்கு மேற்பட்ட Fibonacci எண்கள் தேவைப்பட்டால், சூத்திரத்திற்கான குறியீட்டை வெவ்வேறு தொடர்புடைய குறியீடுகள் ஒவ்வொன்றிற்கும் ஒரு முறை அழைக்க வேண்டும்.

ஜாவாவில், ஒரே ஒரு ஃபைபோனச்சி எண்ணை உருவாக்கும் முறை:

இறக்குமதி java.lang.* ;

வர்க்கம் இழை {
இரட்டை fibNo ( முழு எண்ணாக n ) {
இரட்டை FibN = ( கணிதம் . பவ் ( ( 1 + கணிதம் . சதுர ( 5 ) ) / இரண்டு , என் ) கணிதம் . பவ் ( ( 1 - கணிதம் . சதுர ( 5 ) ) / இரண்டு , என் ) ) / கணிதம் . சதுர ( 5 ) ;
திரும்ப FibN ;
}
}

நிரலின் தொடக்கத்தில் java.lang.* தொகுப்பு இறக்குமதி செய்யப்பட வேண்டும். ஏனென்றால், தொகுப்பில் கணித வகுப்பு உள்ளது, இது சக்தி (pow) மற்றும் ஸ்கொயர் ரூட் (sqrt) முறைகளைக் கொண்டுள்ளது. இங்கே தனிப்பயன் ஜாவா முறையானது கணித சூத்திரத்தை நேரடியாக செயல்படுத்துகிறது.

இந்த செயல்பாட்டிற்கான நேர சிக்கலானது O(1), ஒரு முக்கிய செயல்பாட்டின் நிலையான டேம் ஆகும். மேலே உள்ள முறைக்கு ஜாவா பிரதான முறையுடன் பொருத்தமான ஜாவா முதன்மை வகுப்பு:

பொது வர்க்கம் முக்கிய {
பொது நிலையான வெற்றிடமானது முக்கிய ( லேசான கயிறு args [ ] ) {
முழு எண்ணாக என் = பதினொரு ;
Fib obj = புதிய இழை ( ) ;
இரட்டை சரி = obj. fibNo ( என் ) ;
அமைப்பு . வெளியே . println ( சரி ) ;
}
}

குறியீட்டு n = 11 அனுப்பப்பட்டது மற்றும் Fibonacci எண், 89 திரும்பியது. வெளியீடு:

89.0000000000003

தேவையற்ற தசம இலக்கங்கள் நீக்கப்படலாம், ஆனால் அது வேறு சில நேரத்திற்கான விவாதம்.

முடிவுரை

ஃபைபோனச்சி எண்கள் முழு எண்களின் ஒரு குறிப்பிட்ட வரிசையாகும். தற்போதைய எண்ணைப் பெற, உடனடியாக முந்தைய இரண்டு தொடர்புடைய எண்களைச் சேர்க்கவும். முதல் இரண்டு Fibonacci எண்கள், 0 ஐத் தொடர்ந்து 1, முழு வரிசையிலும் முன்கூட்டியே அறிவிக்கப்படுகின்றன. மீதமுள்ள ஃபைபோனச்சி எண்கள் அங்கிருந்து தயாரிக்கப்படுகின்றன.

குறியீட்டு 2 இலிருந்து ஃபைபோனச்சி எண்களை உருவாக்க, இன்டெக்ஸ் n-1 க்கு ஒத்ததாக, முதன்மை அறிக்கையுடன் ஃபார்-லூப்பைப் பயன்படுத்தவும்:

முழு எண்ணாக currNo = பி [ நான் - 1 ] + பி [ நான் - இரண்டு ] ;

இதில் currNo என்பது தற்போதைய Fibonacci எண் மற்றும் P என்பது n எண்களை சேமிப்பதற்கான வரிசையாகும்.

எந்த பூஜ்ஜிய அடிப்படையிலான குறியீட்டு n இலிருந்து ஒரு ஃபைபோனச்சி எண்ணை உருவாக்க, கணித சூத்திரத்தைப் பயன்படுத்தவும்: