Nerd Paradise : Coding Interview 5: Fibonacci



Nerd Paradise : Coding Interview 5: Fibonacci

This is one of those questions that people don't really give much thought to until they're actually in the interview. There are 4 answers to this question.

The Utterly Horrible Answer

The Fibonacci sequence can be expressed recursively:
F(1) = 1
F(2) = 1
F(n) = F(n - 1) + F(n - 2)

In fact, aside from factorial, this is one of the most common examples of a recursive function used in CS1 classes everywhere. Which is bad when you analyze the complexity. Every time you call the Fibonacci function, it will ultimately recurse down to a bunch of F(0) and F(1) calls. If you want to find the 40th Fibonacci number, that's 102,334,155. But to get to that solution, you are adding 1 to itself 102,334,155 times. The code for this is remarkably simple:
function fib(n):
    if n <= 2:
        return 1
    
    return fib(n - 1) + fib(n - 2)

If you do make the mistake of giving this as an answer and you are asked what the complexity is, it's the golden ratio to the power of n. O(1.618n)

Read full article from Nerd Paradise : Coding Interview 5: Fibonacci


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts