There is an important difference!
The following code implicitly sets the save
attribute for variable y
.
This implies that it will only be set to 0 in the first call to the function and it retains its value from the previous call for the next call.
recursive function foo(x) result (f)
real :: x, y = 0
real :: f
...
end function
In comparison the other code sets y
to 0 in each call.
recursive function foo(x) result (f)
real :: x, y
real :: f
y = 0
...
end function
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…