38 lines
792 B
Fortran
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
|