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 |
In ISO Fortran 90 or later, use a RECURSIVE function: |
||
recursive function |
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 = |
case default; fib = fibR(n-1) + fibR(n-2) |
||
end select |
end select |
||
end function |
end function fibR |
||
===Iterative=== |
===Iterative=== |
||
In ISO Fortran 90 or later: |
In ISO Fortran 90 or later: |
||
function |
function fibI(n) |
||
integer, intent( |
integer, intent(in) :: n |
||
integer, parameter :: fib0 = 0, fib1 = 1 |
integer, parameter :: fib0 = 0, fib1 = 1 |
||
integer :: |
integer :: fibI, back1, back2, i |
||
select (n) |
select case (n) |
||
case (:0); |
case (:0); fibI = fib0 |
||
case (1); |
case (1); fibI = fib1 |
||
case default |
case default |
||
fibI = fib1 |
|||
back1 = fib0 |
back1 = fib0 |
||
do i = 2, n |
do i = 2, n |
||
back2 = back1 |
back2 = back1 |
||
back1 = |
back1 = fibI |
||
fibI = back1 + back2 |
|||
end do |
end do |
||
end select |
end select |
||
end function |
end function fibI |
||
=={{header|Haskell}}== |
=={{header|Haskell}}== |