Fibonacci Numbers—Recursive Approach
Explore the recursive approach to computing Fibonacci numbers, including the historical origins, the exponential time complexity of naive recursion, and the optimization using memoization. This lesson helps you understand how to implement recursion and improve algorithm efficiency in Python.
We'll cover the following...
Origins of recursion
One of the earliest examples of recursion arose in India more than 2000 years ago, in the study of poetic meter or prosody. Classical Sanskrit poetry distinguishes between two types of syllables (aksara): light (laghu) and heavy (guru). In one class of meters, variously called or , each line of poetry consists of a fixed number of “beats” (), where each light syllable lasts one beat, and each heavy syllable lasts two beats. The formal study of dates back to the , written by the scholar between 600 BCE and 200 BCE. observed that there are exactly five 4-beat meters: ——, — • •, • — •, • •—, and • • • •. (Here, each “—” represents a long syllable, and each “•” represents a short syllable.)
Although text hints at a systematic rule for counting meters with a given number of beats, it took about a millennium for that rule to be stated explicitly. In the 7th-century CE, another Indian scholar named wrote a commentary on work, in which he observed that the number of meters with beats is the sum of the number of meters with beats and the number of meters with beats. In more modern notation, ...