recursion - How does the the fibonacci recursive function "work"? -



recursion - How does the the fibonacci recursive function "work"? -

i'm new javascript , reading on it, when came chapter described function recursion. used illustration function find nth number of fibonacci sequence. code follows:

function fibonacci(n) { if (n < 2){ homecoming 1; }else{ homecoming fibonacci(n-2) + fibonacci(n-1); } } console.log(fibonacci(7)); //returns 21

i'm having problem grasping function doing. can explain what's going on here? i'm getting stuck on 5th line, function calls itself. what's happening here?

you're defining function in terms of itself. in general, fibonnaci(n) = fibonnaci(n - 2) + fibonnaci(n - 1). we're representing relationship in code. so, fibonnaci(7) can observe:

fibonacci(7) equal fibonacci(6) + fibonacci(5) fibonacci(6) equal fibonacci(5) + fibonacci(4) fibonacci(5) equal fibonacci(4) + fibonacci(3) fibonacci(4) equal fibonacci(3) + fibonacci(2) fibonacci(3) equal fibonacci(2) + fibonacci(1) fibonacci(2) equal fibonacci(1) + fibonacci(0) fibonacci(1) equal 1 fibonacci(0) equal 1

we have parts needed evaluate fibonacci(7), our original goal. notice base case -- return 1 when n < 2 -- makes possible. stops recursion, can can start process of unrolling stack , summing values we're returning @ each step. without step, we'd go on calling fibonacci on smaller , smaller values right until programme crashed.

it might help add together logging statements illustrate this:

function fibonacci(n, c) { var indent = ""; (var = 0; < c; i++) { indent += " "; } console.log(indent + "fibonacci(" + n + ")"); if (n < 2) { homecoming 1; } else { homecoming fibonacci(n - 2, c + 4) + fibonacci(n - 1, c + 4); } } console.log(fibonacci(7, 0));

output:

fibonacci(7) fibonacci(5) fibonacci(3) fibonacci(1) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(4) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(3) fibonacci(1) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(6) fibonacci(4) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(3) fibonacci(1) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(5) fibonacci(3) fibonacci(1) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(4) fibonacci(2) fibonacci(0) fibonacci(1) fibonacci(3) fibonacci(1) fibonacci(2) fibonacci(0) fibonacci(1)

values @ same level of indentation summed produce result previous level of indentation.

recursion

Comments

Popular posts from this blog

How do I check if an insert was successful with MySQLdb in Python? -

delphi - blogger via idHTTP : error 400 bad request -

postgresql - ERROR: operator is not unique: unknown + unknown -