fortran-courses/Intermediate Fortran/Section 2 - Procedure Attri.../recursive_sum_solution.f90

38 lines
792 B
Fortran

program recursive_sum_exercise
implicit none
integer, parameter :: THE_NUMBERS(*) = [2, 3, 5, 7, 11]
integer :: answer
answer = sum2(THE_NUMBERS)
if (answer == 28) then
print *, "You got it! :)"
else
print *, answer
print *, "Not quite right yet. :("
end if
contains
recursive function sum_(numbers) result(total)
integer, intent(in) :: numbers(:)
integer :: total
if (size(numbers) == 1) then
total = numbers(1)
else
total = sum_(numbers(1:size(numbers)/2)) + sum_(numbers(size(numbers)/2+1:))
end if
end function
recursive function sum2(numbers) result(total)
integer, intent(in) :: numbers(:)
integer :: total
if (size(numbers) == 1) then
total = numbers(1)
else
total = numbers(1) + sum2(numbers(2:))
end if
end function
end program