Everyone can be a java programmer but to be a java teacher It takes a lot of effort Thank you John
@belkhirisub91152 жыл бұрын
Honestly, I was struggling to understand Fibonacci in high school, but now I understand everything well I wish you were my programming teacher
@asankasiriwardena33832 жыл бұрын
a fairly easy implementation without recursion, int n = 10; int[] arr = new int[n]; arr[1] = 1; for (int i = 2; i < n; i++) { arr[i] = arr[i - 1] + arr [i -2]; } System.out.println(Arrays.toString(arr));
@ramila5485Ай бұрын
Most simplest way.Thank you
@jonsantos60562 жыл бұрын
Very useful for learning recursion especially if dealing with slow speed computations. *Tip: Primitives can never be assigned 'null', instead, they will default to 0.*
@MrDarshD3 жыл бұрын
Well explained and coded! Loved the way you described small details like why we do n-1 and n+1!! Also appreciate the bonus at the end with all numbers printed. Thank you so much John!
@Guide4Ever2 жыл бұрын
This was one of the best and well delivered tutorials! Kudos to you!
@MTB_Bay_Area2 жыл бұрын
Clear, and to the point like all your videos. Thank you for helping.
@Avarn3882 жыл бұрын
You’ve earned my sub. I’ve been working out a similar problem with Python so your refresher was really helpful. I will definitely utilize this for my assignment.
@cstrovn Жыл бұрын
Thank you for this beautiful tutorial. I'd never programmed in Java till this week when I decided to make a personal project entirely in it. It was painful but I made it through. This tutorial definitely helped a lot.
@uncopino2 жыл бұрын
i was playing around with recursion yesterday and i made a fibonacci recursive algorithm as fast as yours but using no static variables. i just made the method return an array of 2 longs (the last two values) in order to avoid the double recursive call. i can post the code if anyone’s interested
@CodingWithJohn2 жыл бұрын
Go for it!
@uncopino2 жыл бұрын
@@CodingWithJohn it should throw an IllegalArgumentException when given n < 2, i know. anyway, here it is: public static long[] last2fibonacciValues(long n) { long[] last2values = {0, 1}; if(n
@mouhebmanai2 жыл бұрын
Thank you for giving all of these informations all for free
@fremontlowe1 Жыл бұрын
Thanks for this tutorial. I found it to be extremely helpful. I even changed the cache variable to BigInt to increase the size of fibonacci numbers returned. I no longer saw negative numbers; and still executed in sub seconds.
@2k7Bertram2 жыл бұрын
Bro I wish you were my Java prof back in college. Excellent!
@iamabhik2 жыл бұрын
Has to be the simplest and best ways to explain concepts...kudos
@jackofnotrades152 жыл бұрын
Man...This guy... Is just ossum...
@bennyibmnkonga11223 жыл бұрын
very cool! the cache help to reduce the complexity of the fibo algorithme to O(n) instead of O(n^2) i found it very amazing and i like, thank you JOHN!
@raz02292 жыл бұрын
or store the values of n in an array upto 100 or something and just return them so you always get O(1) to impress your teacher. LOL
@AlexandruTimus2 жыл бұрын
You can get O(1) by doing the calculation in a mathematical way. You you search on internet there are some formulas that can calculate the Nth number in just one line of matemathic operations.
@theALFEST2 жыл бұрын
Iterative algorithm is much faster and doesn't need cache
@bolbans2 жыл бұрын
@@theALFEST would you mind sharing?
@theALFEST2 жыл бұрын
@@bolbans for (int i = 3; i
@krishnanath082 жыл бұрын
I'm feeling energized now. Practicing java again after 9years. I do not remember anything at all taking it slow n steady and watching your videos to clear my doubts
@vpenywise3 жыл бұрын
Brutal... It all seems so easy, so logical, so natural... But then you try to code it yourself and... woof! :D
@alexandercvetkov42693 жыл бұрын
Repetition is the mother of all knowledge. :D The fundament is easy and natural, to be able to apply the fundament - it takes practice. And practice is the child of repetition. I was like that with two-dimensional arrays - the two indexes confused me to a level beyond 14 year old girl, watching a chick-flick. Now i do them fine. :D I guess a guy must be more stubborn than the actual thing he wants to learn.
@danielmdubois3 жыл бұрын
Nice video. I understand why you skipped over it, since the focus was on teaching recursion, but I think it would be worth taking a moment at the point when you introduce a for loop to mention that you could have avoided all the recursion entirely with an interative solution. (At least you're saving the memoization from call to call!)
@FredrickIrubor2 жыл бұрын
Using a for loop and array worked just fine with fast speed public class FibonnaciLoop { private static long[] fibArr; public static void main(String[] args) { int n=50; fibArr = new long[n+1]; fibArr[0]=0; fibArr[1]=1; for (int i=2; i
@danielmdubois2 жыл бұрын
@@FredrickIrubor You don't need to allocate an array; you can get by with updating and storing nMinus1 and nMinus2 each iteration.
@pradeepyadav25622 жыл бұрын
clear , consice and crisp
@evanderoos95472 жыл бұрын
Thanks bro, you have no idea how much this helped
@evanserickson3 жыл бұрын
Love the video! Let's see some full stack tutorials for back end. Like spring and credit card processing
@robertb53573 жыл бұрын
Great and easy explanations of many java topics. Keep up the good work
@tubememax Жыл бұрын
We could also use a hash map to store results over more than one calculation.
@elmehditalbi89723 жыл бұрын
Hello John, I'm asking once again if generics can be done in a video explained by you. Please I'm having trouble with the content, and your explanation is magnificent !
@CodingWithJohn3 жыл бұрын
I do plan to have a generics video sometime, it just depends on if I have enough time during any given week to make the video on that particular topic. Some take quite a bit long to put together than others!
@elmehditalbi89723 жыл бұрын
@@CodingWithJohn thank you so much
@joshlicew66913 жыл бұрын
Bro generics are so easy. Lets say for example you have a ArrayList, I cant pass a string, or a double, or any other type other than a Integer. NOW with a generics class you replace where you would put the type to a letter, it can be any letter, but usually E. So now im going to say ArrayList. Now the type is a generics type which means i can now say ArrayList, or Arraylist, its just like think of it as a variable. It chances based on the use
@timothymattnew3 жыл бұрын
@@CodingWithJohn yep, the video is very needed)
@lucasteixeira16312 жыл бұрын
he made it! Generics In Java - Full Simple Tutorial kzbin.info/www/bejne/gWLMpmShjdCJpaM
@urosjovanovic18643 жыл бұрын
I have viewed many coding videos but I must say never have I ever found that somebody explains it so good. Just keep making videos, it suits you so much. Regards from Serbia :D
@KaisarAnvar2 жыл бұрын
I love the fact that you don’t use auto-prediction while you’re typing. I want to disable mine too but don’t know how. I use IntelliJ and VSCode.
@gongdian1232 жыл бұрын
The amazing code, i never seen it, high effectiveness
@Jesun-fi1zr5 ай бұрын
Thx you are saviour of the exam
@nibbler73 жыл бұрын
Man your videos are a lifesaver! Could you do a video on lambdas? It would be very appreciated!
@DavidOliveira-tm9bj2 жыл бұрын
John, you're a legend!
@jesusayala1342 Жыл бұрын
Thank you very much for all the effort dear John!!! I like all your content, it helps us to learn a lot!! please don't stop teaching us =) I was thinking of simplifying a bit the code you teach us in your video, but I'd like your opinion: private static long fibonacci(int n){ if (n
@totem37002 жыл бұрын
I always wanted to learn about recursion and I like the fibonacci sequence. This video was really helpfull
@haltsmaul.2 жыл бұрын
To calculate all Fibonacci's up to n, you could have used the cache array instead of using a for loop to calculate each n.
@tusharnagare64092 жыл бұрын
I just love you videos very smart explanation to all the concept. Keep up the good work :)
@DK-fn6xr Жыл бұрын
This is how I learned about stack overflow error.
@TheBikerDude20242 ай бұрын
Wonderful explaining.
@07Flash11MRC3 жыл бұрын
Great video. Can you do Bernoulli Numbers next, please?
@marathistates2 жыл бұрын
Thanks jon Bhai i am from India🇮🇳 😍
@myguy2656 Жыл бұрын
Can Someone explain how he gets f(6) = f(6-1) + f(6-2) =8? Because when i add it up i get 5+4=9…
@ValeriaDaffarraАй бұрын
Because 6 is just the counter of the "iterations", in this case the recursions. This recursion works backwards, starting to sum the values at the base case and working back to the top. Look at it like an index. N-2, index 4 is 3 and n-1, index 5 is 5. You need to call the fibonacci method 6 times in order to get 8, because it starts to add when all the calls are made and hits the base case that is when returns 0+1 first, then 1+ 1 second, then 1+ 2 third, then 2+ 3 fourth, then 3+ 5 fifth. Then 5+ 8 sixth. It's bullshit, a loop would do the same just fine. I hope I've explained well enough. It cannot start to add if it don't hit the base case. That means that you know the base case and have hard coded it in order to stop the recursion. So there is absolutely no point in doing this, nothing that cannot be achieved with a much clearer loop.
@JimFikes Жыл бұрын
Thanks, John. Your explanations are always so helpful.
@octaviocardenas40124 ай бұрын
I did that series without recursion that way: int[] fibonacci = new int[20]; fibonacci[0] = 0; fibonacci[1] = 1; for(int i=2; i
@Gandobilis Жыл бұрын
Awesome tutorial!
@PortgueseProBF3 Жыл бұрын
Whoa this is amazing, didnt even think of that
@vitcermak77372 жыл бұрын
As a junior software engineer (Java dev) I gotta ask you - where have you been 2 years ago when I was sweating bullets on programming exercises like this?! :D
@farkhodkuchkarov52382 жыл бұрын
Thank you so much for such an effective tutorial dude! I love it!
@cipher-6.662 жыл бұрын
Hey John, love the Epi SG. And Rush are amazing.
@front-endfatih40303 жыл бұрын
My favorite one yet
@kishordige97212 жыл бұрын
Thank you very much. Explained Simply.
@CodingWithJohn2 жыл бұрын
Thanks! Glad it helped
@FloStudios10 ай бұрын
Interesting facet about this caching method...you don't even need to write a loop and run fibonacci() n-times. Just run it once and the cache should have the whole sequence! Print the array space delimited.
@dondigidon16332 жыл бұрын
John, thank you! You do great content! 👍👍👍👍👍
@mdstrapa2 жыл бұрын
your content is amazing!
@brightmatter2 жыл бұрын
interesting, I made one of these with an iterative approach to add up a particular diagonal in pascal's triangle. I think i hit a wall sooner than n=92 though. i'll have to go back and see why that was.
@lucasteixeira16312 жыл бұрын
awesome video! very detailed and full of useful info
@arsalali7836 Жыл бұрын
Great work man !
@dianamirlanbekova5894 Жыл бұрын
Hi John, why 0 is not being counted as 1st number in fibonacci sequence? If I type 3, it results 0 1 1 2. It should've print out 0 1 2
@mineworld2152 ай бұрын
Because in Java position allocation start for 0 then 1
@mariamaamir111610 ай бұрын
Thank you so much this truly helped me!!!!!!!
@titasroy29233 жыл бұрын
Love you sir ! Take my good wishes
@moaly47383 жыл бұрын
Very interesting and well explained as Always
@fathimasyed42322 жыл бұрын
Good tutorial. Thank you.
@ilmo-u8j2 жыл бұрын
Very cool and amazing content man!
@emerson30703 жыл бұрын
6:12 You remind me of the Dean from 'Community' the show lol :)
@u2bMusicBeauty2 жыл бұрын
What an amazing video, I am getting more and more interested in Java! +100👍
@LaszloHadadi3 жыл бұрын
Hello John, First of all the content is great! I think your reasoning why you need to size the cache to be n +1 is not 100% correct: Basically you never used the cache[0] as when f0 caculated you return with 0 in line 19. Also I would arguing with the condition in line 18 because for fibonacci(-2) it would return with -2 which is technically invalid and I rather would throw an exception when So my method would look like this (of course let's not talk about conccurency issues during the cache population): private static long fibonacci(int n) { if (n
@CodingWithJohn3 жыл бұрын
Yes, you can keep your cache size "n" but then you have to offset the index by 1 when storing/looking up values, which I think just leads to more confusion. But if you really want to you can make it "n" instead and do that, you can do it. And I agree that for a super robust method, it should throw exceptions when negative values are entered. I haven't tried running your code myself, but I think it needs to account for the condition where n = 1 also. If it isn't coded explicitly to return 1, I think it will try calling fibonacci(n - 2), which would be fibonacci(-1) and throw an exception. Thanks for watching, and for the great comment!
@svalyavasvalyava98673 жыл бұрын
Thanks a lot for all the effort!!!
@enriquecabral-mixco13377 ай бұрын
Great video!
@pulumathisireesha76522 жыл бұрын
sir , after a certain limit why some are -ve and some are positive..bcz after 92 i.e, after it cross the limit of LONG size, all should be negative right. but why some are positive?
@jelmerterburg35882 жыл бұрын
This happens because overflow can result in any number within the signed 64 bit range, both positive and negative. Adding two large negative numbers, for example, can easily overflow to a positive number. In the case of the Fibonacci sequence, things will start to bounce around pretty wildly as soon as the first negative number appears.
@surendharv7952 жыл бұрын
Thank you john !
@ravitrivedi95882 жыл бұрын
Thank you so much for the simple explanation john!!!!!!!!, I just have a tiny question to ask , Why are you creating a Cache in main method can't we directly create it inside the fibonacci function itself ? As its using mainly over there
@sianke19912 жыл бұрын
Very Helpful.
@JoaoRicSoares Жыл бұрын
What text font is he using?
@emekaukwuoma3359 Жыл бұрын
Nice video John. Out of curiosity, is it possible to have the cache within the method?
@CarlosFlinston5 ай бұрын
fibonacci without recursion for curious: private static long fibonacci(int n) { if (n
@Mu7ammad11 ай бұрын
is there a way to solve the problem of limitation like what if I use wrapped numbers?
@Nbak-cw7jx2 жыл бұрын
Hello thank you for this tutorial, but what if the user will be the ones to choose the start and end point of the Fibonacci like the user chooses 55 as the starting point and 987 as the end, and it must dispay 55 to 987 without displaying the series before 55
@JesseLinseman2 жыл бұрын
Simply change the bounds of the for loop he showed in the video to include this user entry. e.g. if user entered start = 55, end = 987, the loop would be changed to the following: for(int i = start; i
@יהודהבןארצי Жыл бұрын
Good explanation
@omaribrahimmemories2 жыл бұрын
how does the code store? isn't when the project is off the still will return to null so if it have been to calculate again it will take same time, i didn't understand this thing
@nate61993 жыл бұрын
Do you think you could explain reading and writing input from a file? Love your videos.
@dilln21583 жыл бұрын
He already did
@lumilo72 жыл бұрын
GRacias pelaooo! ♥
@sysybaba420 Жыл бұрын
Well explained and coded!!! Can we use Integer[] instead to avoid negative values?
@Jancirubi Жыл бұрын
We can use BigInteger instead to avoid negative values. This will cover wide range of values.
@diyaa_hudaib52633 жыл бұрын
U are great maaaannn can u explain how can i put every element in GUI separated on lines and put thim exactly on the spot that i think?
@BoMpOwMsp3 жыл бұрын
So helpful, thanks!!
@Thebiggestgordon2 жыл бұрын
How would you get around the long limit if you wanted to find higher values? Is there some “longer” data type floating around? Or would you have to do some bit crunching to simulate it yourself with 2 separate longs?
@jelmerterburg35882 жыл бұрын
You can use the BigInteger class for integer calculations beyond 64 bits (and BigDecimal for something more precise than a double). However, since these calculations are not primitive operations on the CPU level and require object allocation, the performance will be significantly worse. Use with caution :)
@emerson30703 жыл бұрын
Thanks John!!
@felixurrutia4246 Жыл бұрын
Is there a way to fix the long issue you shown at the end of the video?
@carlostitlan Жыл бұрын
May be with BigInteger class
@phekev3 жыл бұрын
Great and simple explanation. Can I give a +1 to the generics suggestion a d suggest a video about ternary operators
@sameenchowdhury23122 жыл бұрын
you have 2 links to your course in the description, 1 is free other is paid. Now which is what and which one is best for what type of people?
@shwetayadav42442 жыл бұрын
Amazin explanation
@m.shahrim19333 жыл бұрын
Well explained
@manudewi Жыл бұрын
I tried to reproduce this for python and didn't get it at first But using nested functions I achieved it... thank you very much for the inspiration!!! 🙏 One question as a Java beginner concerning the scope of the fibonacciCache, that makes it accessible to different recursive calls of the fibonacci function (as every recursive call has it's own execution context, we don't wan't to be creating a number of fibonacciCache arrays equal to the number of recursive calls, right?)). I get why you create an array instance outside of the fibonacci method, but is there any special reasion, why you created a fibonacciCache method, instead of just a fibonacciCache array? Has it to do something with the fact, that array sizes in Java are fixed?
@EnriqueMoranG2 жыл бұрын
Sir, you're massive!! I'm still trying to understand a part of the video but it's brilliant! I thought about using a hash map but I think it would be pretty similar to using an array, right?
@gift_banda6 ай бұрын
public static void main(String[] args) { Map memo = new HashMap(); int result = fibonacci(5, memo); System.out.println(result); } /** * Calculates the nth Fibonacci number using memoization. * Time Complexity: O(n) where n is the value of the input number. * Space Complexity: O(n) for storing the memoization map and the recursive call stack. */ public static int fibonacci(int num, Map memo) { if (num
@michelazar5920 Жыл бұрын
why do you use private instead of public for the fibonacci method
@djwebm66532 жыл бұрын
Nice video, but im debating with myself if the cache was really needed aswell. Wouldnt it be possible to pass trough the destination n, the current n previous number and this number recursivly? I might be in the wrong here tho but Something like this: fibbonachi(int destN, int currentN, int previous, int number) The method would just add the numbers and send through the new number and the number variable. And then whenever the destN is equal to the currentN it would stop recurring
@syedmohammedyusoof52132 жыл бұрын
Hi John, In the above code array of index 0 and index 1 both are zero 0 0 1 2 3 5 8 instead of 0 1 1 2 3 5 8 since index at 1 is never set...
@juanausensi4992 жыл бұрын
You're right, but the program returns the correct answer because the first 'if' checks both n=0 and n=1 without using the array.
@AnuragSingh-fd7nc2 жыл бұрын
How can i see how much time it took to run the program in visual studio code?
@vladislavstashek20632 жыл бұрын
The way you explain is mesmerising! But I have a question, how can we find the 100th Fibonacci number ?
@YeniCorrea Жыл бұрын
I would dare to say, using BigDecimal instead of long because that datatype can store bigger numbers.
@mihirgore40742 жыл бұрын
You rock dude !
@ahmedbishree94292 жыл бұрын
Thanks, John you are amazing, I want to ask you, instead of using a normal array or hash map is there any library for the cache in java?