Fibonacci sequence: Difference between revisions
(Added BASIC example.) |
(Added Python) |
||
Line 53: | Line 53: | ||
return recFibN(n-1) + recFibN(n-2); |
return recFibN(n-1) + recFibN(n-2); |
||
}</java> |
}</java> |
||
=={{header|Python}}== |
|||
===Iteractive=== |
|||
<python>def fibIter(n): |
|||
if n <= 2: |
|||
return 1 |
|||
fibPrev = 1 |
|||
fib = 1 |
|||
for num in xrange(2, n): |
|||
temp = fib |
|||
fib += fibPrev |
|||
fibPrev = temp |
|||
return fib</python> |
|||
===Recursive=== |
|||
<python>def fibRec(n): |
|||
if n <= 2: |
|||
return 1 |
|||
else: |
|||
return fibRec(n-1) + fibRec(n-2)</python> |
Revision as of 21:15, 29 February 2008
You are encouraged to solve this task according to the task description, using any language you may know.
The Fibonacci sequence is a sequence of numbers defined as such:
Where n is an integer greater than 2: F1 = F2 = 1 Fn = Fn-1 + Fn-2
Write a function to generate the nth Fibonacci number. Solutions can be iterative or recursive (though recursive solutions are generally considered too slow and are mostly used as an exercise in recursion).
BASIC
Iterative
<qbasic>FUNCTION itFib (n) IF (n <= 2) THEN
itFib = 1
ELSE
ans = 0 n1 = 1 n2 = 1 n = n - 2 DO WHILE (n > 0) ans = n1 + n2 n1 = n2 n2 = ans n = n - 1 LOOP itFib = ans
END IF END FUNCTION</qbasic>
Recursive
<qbasic>FUNCTION recFib (n) IF (n <= 2) THEN
recFib = 1
ELSE
recFib = recFib(n - 1) + recFib(n - 2)
END IF END FUNCTION</qbasic>
Java
Iterative
<java>public static long itFibN(int n){ if(n <= 2)return 1; long ans = 0; long n1 = 1; long n2 = 1; for(n -= 2;n > 0;n--){ ans = n1 + n2; n1 = n2; n2 = ans; } return ans; }</java>
Recursive
<java>public static long recFibN(int n){ if(n <= 2) return 1; return recFibN(n-1) + recFibN(n-2); }</java>
Python
Iteractive
<python>def fibIter(n):
if n <= 2: return 1 fibPrev = 1 fib = 1 for num in xrange(2, n): temp = fib fib += fibPrev fibPrev = temp return fib</python>
Recursive
<python>def fibRec(n):
if n <= 2: return 1 else: return fibRec(n-1) + fibRec(n-2)</python>