我阅读了一些论文和文档,其中说功能编程使用“递归”概念来迭代集合数据,而OOP使用“循环”概念来迭代集合数据(例如: - Java中的for-each循环)。所以我对这个说法感到困惑。我有三个问题
答案 0 :(得分:1)
你的问题有点不清楚,例如
在函数式编程中使用“循环”时这是一个好习惯吗?
在函数式编程语言中,循环结构会是什么?一些函数式编程语言缺少显式循环语句(for-each,for,while,do-while,...)
无论如何,按顺序:
在函数式编程中使用“循环”时这是一个好习惯吗?
任何使用命令式表达循环的尝试通常被认为是一种糟糕的做法。如前所述,许多函数式编程(FP)语言缺乏这样的结构。
如果没有,谁能告诉我应该用什么方法?
您可以在维基百科上阅读recursion。
许多数据结构(如列表)本质上是递归的,因此递归迭代它们应该感觉相当自然。
有人能给我一个例子和比较两种迭代收集数据的方法吗?
让我们使用一些伪代码遍历列表,
映射到不同循环结构的几个命令性示例。
list = [1, 2, 3]
for element in list:
print element
让len
成为返回列表长度的函数,让列表为零索引,以便list[0] == 1
,
list = [1, 2, 3]
i = 0
while i < len(list):
print element
i++
使用递归:
让head(list)
成为返回列表第一个元素的函数,tail(list)
返回头后的所有元素
list = [1, 2, 3]
def loop(list):
if list == []: # Check if the list is empty
return
print head(list)
loop(tail(list))
还有其他方法可以在许多FP语言中迭代列表,最值得注意的是map
和列表推导,但我现在就把它排除在外。