1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| PROGRAM Pascaltriangle
IMPLICIT NONE
INTEGER,ALLOCATABLE,DIMENSION(:) :: x
INTEGER :: sort
sort=10 ! number of rows in the triangle
ALLOCATE (x(1))
CALL triangle(x,1,sort)
DEALLOCATE (x)
END PROGRAM
!
RECURSIVE SUBROUTINE triangle(x,n,sortt)
INTEGER :: n,sortt
INTEGER,DIMENSION(*) :: x
INTEGER,ALLOCATABLE,DIMENSION(:) :: t
IF (n==1) THEN
ALLOCATE(t(1))
t=1
ELSE IF(n==2) THEN
ALLOCATE(t(2))
t=1
ELSE
ALLOCATE(t(n))
t(1)=1
t(n)=1
DO i=2,n-1
t(i)=x(i-1)+x(i+1)
END DO
END IF
PRINT '(12I4)',t
IF (n==sortt) RETURN
CALL triangle(t,n+1,sortt)
END SUBROUTINE |
Partager