Fibonacci sequence: Difference between revisions

Content deleted Content added
Line 163: Line 163:
=={{header|Fortran}}==
=={{header|Fortran}}==
===Recursive===
===Recursive===
In ISO Fortran 90 or later, use recursive function:
In ISO Fortran 90 or later, use a RECURSIVE function:
recursive function fib(n)
recursive function fibR(n) result(fib)
integer, intent(in) :: n
integer, intent(in) :: n
integer :: fib
integer :: fib
select (n)
select case (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 = fibR(n-1) + fibR(n-2)
end select
end select
end function fib
end function fibR


===Iterative===
===Iterative===
In ISO Fortran 90 or later:
In ISO Fortran 90 or later:
function fib(n)
function fibI(n)
integer, intent(n) :: n
integer, intent(in) :: n
integer, parameter :: fib0 = 0, fib1 = 1
integer, parameter :: fib0 = 0, fib1 = 1
integer :: fib, back1, back2, i
integer :: fibI, back1, back2, i
select (n)
select case (n)
case (:0); fib = fib0
case (:0); fibI = fib0
case (1); fib = fib1
case (1); fibI = fib1
case default
case default
fib = fib1
fibI = fib1
back1 = fib0
back1 = fib0
do i = 2, n
do i = 2, n
back2 = back1
back2 = back1
back1 = fib
back1 = fibI
fib = back1 + back2
fibI = back1 + back2
end do
end do
end select
end select
end function fib
end function fibI


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