authour刚刚写道:
“我们通过切片提取其余矢量的方式将使R复制该子向量。我们第一次调用rest时,我们得到整个向量减去第一个元素,第二次得到整个向量减去前两个,依此类推。这加起来大约是矢量平方长度的一半。因此,虽然搜索算法应该以线性时间运行,但我们提取向量的其余部分的方式使其在二次时间内运行“(R中的函数编程) 数据科学,分析和金融高级统计编程)
你能帮助我理解为什么每次向量减少1时实现休息函数的原因是什么?
示例代码如下:
lin_search <- function(element, sequence) {
if (is_empty(sequence)) FALSE
else if (first(sequence) == element) TRUE
else lin_search(element, rest(sequence))
}
is_empty <- function(x) length(x) == 0
first <- function(x) x[1]
rest <- function(x) {
if (length(x) == 1) NULL else x[2:length(x)]
}