そのStack overflowは無限に自分自身を呼びだそうとして失敗してます。再帰ってやつですね。
DEF FUNC:FUNC:END
と同じ状況になってます。8行目の書き方でOKなのは、8行目のSUM()を呼び出す前にSHIFTによって配列の要素が取り覗かれるので、最終的にからっぽになり5行目で終了するため、無限にSUMが呼び出されないからです。3行目と4行目の間に ?"SUM()";LEN(D) とか実行してみるとわかりやすいかと。
ちなみに8行目のやりかたの場合でも、A%の要素数を3000個くらいにするとStackoverflowになるはずです。
というわけで最初のコードも、今回のコードも引数に配列を渡したことが原因ではないので、安心して渡しちゃってください:) ところで、これSUM()実行後、A%が空っぽになるけど大丈夫ですかね?いわゆる参照渡しなので…。
1そうだね プレイ済み