Fibonacci sequence: Difference between revisions

Content added Content deleted
(add E example)
Line 164: Line 164:
===Recursive===
===Recursive===
In ISO Fortran 90 or later, use recursive function:
In ISO Fortran 90 or later, use recursive function:
RECURSIVE FUNCTION FIB(N)
recursive function fib(n)
INTEGER, INTENT(IN) :: N
integer, intent(in) :: n
INTEGER :: FIB
integer :: fib
SELECT (N)
select (n)
CASE (:0); FIB = 0
case (:0); fib = 0
CASE (1); FIB = 1
case (1); fib = 1
CASE DEFAULT; FIB = FIB(N-1) + FIB(N-2)
case default; fib = fib(n-1) + fib(n-2)
END SELECT
end select
END FUNCTION FIB
end function fib


===Iterative===
===Iterative===
In ISO Fortran 90 or later:
In ISO Fortran 90 or later:
FUNCTION FIB(N)
function fib(n)
INTEGER, INTENT(N) :: N
integer, intent(n) :: n
INTEGER, PARAMETER :: FIB0 = 0, FIB1 = 1
integer, parameter :: fib0 = 0, fib1 = 1
INTEGER :: FIB, BACK1, BACK2, I
integer :: fib, back1, back2, i
SELECT (N)
select (n)
CASE (:0); FIB = FIB0
case (:0); fib = fib0
CASE (1); FIB = FIB1
case (1); fib = fib1
CASE DEFAULT
case default
FIB = FIB1
fib = fib1
BACK1 = FIB0
back1 = fib0
DO I = 2, N
do i = 2, n
BACK2 = BACK1
back2 = back1
BACK1 = FIB
back1 = fib
FIB = BACK1 + BACK2
fib = back1 + back2
END DO
end do
END SELECT
end select
END FUNCTION FIB
end function fib


=={{header|Haskell}}==
=={{header|Haskell}}==