Sponsored Content
Top Forums Shell Programming and Scripting Shell script to generate Fibonacci series using recursion Post 302378789 by Scrutinizer on Tuesday 8th of December 2009 08:57:18 PM
Old 12-08-2009
Yes, the recursive approach is not the most efficient way. What is also interesting is the difference between shells. I changed your code yet again a bit so that it would work in any posix shell:

Code:
Fibonacci (){
  case $1 in
    0|1) printf "$1 " ;;
    *)   printf "$(( $(Fibonacci $(($1-2))) + $(Fibonacci $(($1-1))) )) ";;
  esac
}

i=0
while [ $i -lt $1 ]
do
  i=$((i+1))
  Fibonacci $i
done
echo


I tested it with bash zsh, dash and ksh:
Code:
$ time ./testzsh 10
1 1 2 3 5 8 13 21 34 55

real    0m0.837s
user    0m0.180s
sys     0m0.648s
$ time ./testbash 10
1 1 2 3 5 8 13 21 34 55

real    0m0.887s
user    0m0.300s
sys     0m0.580s
$ time ./testdash 10
1 1 2 3 5 8 13 21 34 55

real    0m0.292s
user    0m0.048s
sys     0m0.240s
$ time ./testksh 10
1 1 2 3 5 8 13 21 34 55

real    0m0.092s
user    0m0.088s
sys     0m0.000s

As is my usual experience, ksh is quite a bit faster then other shells.

I also tested a nonrecursive version (timed in ksh):
Code:
$ time ./nonrecurs 10
0 1 1 2 3 5 8 13 21 34 55

real    0m0.013s
user    0m0.016s
sys     0m0.000s

And the difference will become vast once the number goes to 20 and higher.

Last edited by Scrutinizer; 12-08-2009 at 10:23 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Fibonacci series

Need code to run the Fibonacci series from 0 to 10 (16 Replies)
Discussion started by: nycol
16 Replies

2. UNIX for Dummies Questions & Answers

generate xml from a shell script

Hello! I would like to generate an xml file from the output of various commands generated from within a shell script (some will be in CDATA). At the moment the only solution I have come up with is echoing xml tags around the commands eg. echo "<bitism>" >> outputfile /usr/sbin/prtconf... (1 Reply)
Discussion started by: speedieB
1 Replies

3. Shell Programming and Scripting

How to generate a series of numbers

Hi All, I have a requirement where in I have an input as follows:- input=1-4,6,8-10,12-15 I need to explode this range into an output file as follows:- 1 2 3 4 6 8 9 10 12 13 14 15 My input may vary like 1,5-9,11-13,15-17....... (3 Replies)
Discussion started by: rony_daniel
3 Replies

4. Shell Programming and Scripting

problem in fibonacci series

hi, I'm a beginner to UNIX and got some problem in this fibonacci.Please help me out.Here is the code: fibo() { if then fibo=` expr {fibo ($1 - 2)} + {fibo ($1 - 1)}` | bc echo $fibo fi } echo "enter a number:" read x #echo "The fibonnacci series for value $x is:" fibo $x ... (4 Replies)
Discussion started by: janani_kalyan
4 Replies

5. Shell Programming and Scripting

Shell script to find the sum of first n Fibonacci numbers

pls give me the solution for this i need it for my exam pls pls pls Shell script to find the sum of first n Fibonacci numbers (1 Reply)
Discussion started by: Kshitija
1 Replies

6. Homework & Coursework Questions

Help with shell script to find sum of first n numbers of Fibonacci series

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: Shell script to find sum of first n numbers of Fibonacci series 2. Relevant commands, code, scripts,... (0 Replies)
Discussion started by: Kshitija
0 Replies

7. Shell Programming and Scripting

generate logfile in a shell script

Unix Gurus, I have a shell script which has few "echo" statements. I am trying to create a logfile where all the outputs of the echo statement sare stored. I will have to add this as the final step in the existing script so that everytime the script runs, a logfile is generated with all the... (1 Reply)
Discussion started by: shankar1dada
1 Replies

8. Shell Programming and Scripting

Fibonacci series -going into infinite loop

Hello, I am a beginner to shell programming. Coded the following for Fibonacci series. #!/bin/bash fib() { i=0 j=1 arr=0 arr=1 echo "enter the limit:" read n while do fo= expr $j - 1 f1=$j f2= expr $j + 1 arr= expr ${arr} + ${arr} echo ${arr} (3 Replies)
Discussion started by: Rookie222
3 Replies

9. Shell Programming and Scripting

Generate documentation for a shell script

Hi, I've written a shell script with proper intentation and commenting structure. However, I would like to generate documentation for the shell which I have written. Is there any tool as such to generate it like we have javagen/docgen ? Please help. Thanks, Arjun (0 Replies)
Discussion started by: arjun_arippa
0 Replies

10. UNIX for Beginners Questions & Answers

Shell script newbie- how to generate service log from shell script

Hi, I am totally a newbie to any programming languages and I just started an entry level job in an IT company. One of my recent tasks is to create a script that is able to show the log file of linux service (i.e. ntpd service) lets say, if I run my script ./test.sh, the output should be... (3 Replies)
Discussion started by: xiaogeji
3 Replies
TIMES(1P)						     POSIX Programmer's Manual							 TIMES(1P)

PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the correspond- ing Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux. NAME
times - write process times SYNOPSIS
times DESCRIPTION
The times utility shall write the accumulated user and system times for the shell and for all of its child processes, in the following POSIX locale format: "%dm%fs %dm%fs %dm%fs %dm%fs ", <shell user minutes>, <shell user seconds>, <shell system minutes>, <shell system seconds>, <children user minutes>, <children user seconds>, <children system minutes>, <children system seconds> The four pairs of times shall correspond to the members of the <sys/times.h> tms structure (defined in the Base Definitions volume of IEEE Std 1003.1-2001, Chapter 13, Headers) as returned by times(): tms_utime, tms_stime, tms_cutime, and tms_cstime, respectively. OPTIONS
None. OPERANDS
None. STDIN
Not used. INPUT FILES
None. ENVIRONMENT VARIABLES
None. ASYNCHRONOUS EVENTS
Default. STDOUT
See the DESCRIPTION. STDERR
The standard error shall be used only for diagnostic messages. OUTPUT FILES
None. EXTENDED DESCRIPTION
None. EXIT STATUS
Zero. CONSEQUENCES OF ERRORS
Default. The following sections are informative. APPLICATION USAGE
None. EXAMPLES
$ times 0m0.43s 0m1.11s 8m44.18s 1m43.23s RATIONALE
The times special built-in from the Single UNIX Specification is now required for all conforming shells. FUTURE DIRECTIONS
None. SEE ALSO
Special Built-In Utilities COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol- ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE
/The Open Group 2003 TIMES(1P)
All times are GMT -4. The time now is 08:11 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy