program main implicit none integer :: n =10 interface function fib(n) integer, intent(in) :: n integer :: fib end function fib end interface !$OMP PARALLEL SHARED(n) !$OMP SINGLE print *, fib(n) !$OMP END SINGLE !$OMP END PARALLEL end program main recursive function fib (n) result (fnum) integer, intent(in) :: n integer :: i,j integer :: fnum if (n<2) then fnum = n else !$OMP TASK SHARED(i) FIRSTPRIVATE(n) i= fib(n-1) !$OMP END TASK !$OMP TASK SHARED(j) FIRSTPRIVATE(n) j= fib(n-2) !$OMP END TASK !$OMP TASKWAIT fnum = i+j endif end function fib