私は大学でデータ構造コースの途中にいて、それを理解しようとしています。C での再帰とループについての一般的な考えはありますが、ループが erlang でどのように実装されるかを理解するのに苦労しています。たとえば、c で私のプログラムから次のループがあります。
int ii;
double cos_lat[8];
for(ii = 2, cos_lat[1] = cos(lat); ii <= 7;; ii++)
{
cos_lat[ii] = cos_lat[1] * cos_lat[ii-1]
}
そして、それがerlangでどのように実装されるかについての手がかりはありません。次のような独自のループ定義を作成する必要があることはわかっています。
for(Max, Max, F) -> [F(Max)];
for(I, Max, F) -> [F(I)|for(I+1, Max, F)].
(実用的なアーランから取得)
そして、次のように呼び出します。
for(2,7,fun(ii) -> // this is where i get stuck.
リストなどの配列に対して別のデータ構造を使用する必要があると思いますが、リストにアクセスする方法は不明です。
返信ありがとうございます。ただの更新 (14/8)。次のようにコードの再帰を試みました。
-module(cos1).
-export([cos_lat/1]).
cos_lat(Base, Iterator, Prev) -> [Base*Prev|cos_lat(Base,Iterator+1,Base*Prev)];
cos_lat(Base, 7, Prev) -> [].
次のように呼び出します。
cos1:cost_lat(cos(lat),2,cos(lat).
しかし、それはうまくいきたくないだけです!Erlang は本当に紛らわしい言語です。