我正在学习大学的数据结构课程,我正在努力理解它。我对 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 确实是一门令人困惑的语言。