Shell Script to Generate Fibonacci Series Iteratively and Recursively
By definition, the first two Fibonacci numbers are 0 and 1, and each subsequent number is the sum of the previous two. I will show you two shell script to generate Fibonacci series recursively and iteratively. Also you will get idea about the application of Fibonacci series/numbers.
In mathematical terms, the sequence Fn of Fibonacci numbers is defined by the recurrence relation Fn = Fn-1 + Fn-2, with seed values F0 = 0 and F1 = 1.
What are the application or use of Fibonacci numbers or series?
The original inspiration for the Fibonacci numbers came from 2 rabbits. If you have 2 rabbits, they will breed and you will then have 3 rabbits. 3 rabbits breeds to make 5, 5 to make 8 and so on. The Fibonacci sequence.
This ratio is the basis many sculptors, artists, and architects over the years have used to create golden rectangles that are pleasing to the eye. It has also been used in designing many man-made structures and materials. Usage of the Fibonacci numbering sequence in design include the Parthenon, the United Nations building, music by Partok, and art by Van Gogh, Monet, Vermeer, Leonardo da Vinci and others.This sequence is not only found in man-made elements but also all around us in nature. This is a basis on which many Christian scientists determine to prove that there was a great and marvelous God who created our Earth and universe. It is not by mere coincidence that the Fibonacci sequence has an ubiquitous presence throughout creation.
Iterative Method in Shell Script:
#!/bin/bash # SCRIPT: interactive_fibonacci.sh # USAGE: interactive_fibonacci.sh [Number] # PURPOSE: Generate Fibonacci sequence. # echo "---------------------------------------------------------------" echo "Collected By: Fahad Ahammed" echo "Website: www.obakfahad.com" echo "Email: me@obakfahad.com" echo "---------------------------------------------------------------" # ##################################################################### # Script Starts Here # ##################################################################### if [ $# -eq 1 ] then Num=$1 else echo -n "Enter a Number :" read Num fi f1=0 f2=1 echo "The Fibonacci sequence for the number $Num is : " echo "" for (( i=0;i<=Num;i++ )) do echo -n "$f1 " fn=$((f1+f2)) f1=$f2 f2=$fn done echo echo "" echo "Thank You" echo ""
Output:
bash iterative_fibonacci.sh 14
--------------------------------------------------------------- Collected By: Fahad Ahammed Website: www.obakfahad.com Email: me@obakfahad.com --------------------------------------------------------------- The Fibonacci sequence for the number 14 is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Thank You
Recursive Method in Shell Script:
#!/bin/bash # SCRIPT: recursive_fibonacci.sh # USAGE: recursive_fibonacci.sh [Number] # PURPOSE: Generate Fibonacci sequence. # echo "---------------------------------------------------------------" echo "Collected By: Fahad Ahammed" echo "Website: www.obakfahad.com" echo "Email: me@obakfahad.com" echo "---------------------------------------------------------------" # ##################################################################### # Arguments Checking # ##################################################################### if [ $# -eq 1 ] then Num=$1 else echo -n "Enter a Number : " read Num fi ##################################################################### # Define Functions Here # ##################################################################### Fibonacci() { case $1 in 0|1) printf "$1 " ;; *) echo -n "$(( $(Fibonacci $(($1-2)))+$(Fibonacci $(($1-1))) )) ";; esac #$(( )) construct is used instead of expr command for doing addition. #$( ) constrict is used instead of back ticks. } ##################################################################### # Main Script Starts Here # ##################################################################### echo "The Fibonacci sequence for the number $Num is : " echo "" for (( i=0; i<=$Num; i++ )) do Fibonacci $i #Calling function Fibonacci done echo echo "" echo "Thank You" echo ""
Output:
bash recursive_fibonacci.sh 14
--------------------------------------------------------------- Collected By: Fahad Ahammed Website: www.obakfahad.com Email: me@obakfahad.com --------------------------------------------------------------- The Fibonacci sequence for the number 14 is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Thank You
Difference: Outputs are same but difference in appearing. You will find iterative results very quickly but recursive one will make delay and appear the numbers slowly.
If you use time command you will get clear idea.
Iterative with Time:
time bash iterative_fibonacci.sh 14
--------------------------------------------------------------- Collected By: Fahad Ahammed Website: www.obakfahad.com Email: me@obakfahad.com --------------------------------------------------------------- The Fibonacci sequence for the number 14 is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Thank You real 0m0.006s user 0m0.000s sys 0m0.004s
Recursive with Time:
time bash recursive_fibonacci.sh 14
--------------------------------------------------------------- Collected By: Fahad Ahammed Website: www.obakfahad.com Email: me@obakfahad.com --------------------------------------------------------------- The Fibonacci sequence for the number 14 is : 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 Thank You real 0m3.085s user 0m0.000s sys 0m0.016s
How to use the Codes or Script?
You can just use terminal.
Create a bash file (.sh) :
touch iterative_fibonacci.sh
Then make that file executable.
chmod a+x iterative_fibonacci.sh
Then edit by nano.
nano iterative_fibonacci.sh
Paste the code and save or use any editor to save. And then you can execute.
How to Execute?
You can use bash,
bash iterative_fibonacci.sh 15
or just script,
./iterative_fibonacci.sh 15
If you have any question you can just ask here in comment section. Thank you.