在我前面的问题中
LongStream fibs = Stream
.iterate(
new long[]{1, 1},
f -> new long[]{f[1], f[0] + f[1]}
)
.mapToLong(f -> f[0]);
fibs
.limit(30)
.forEach(System.out::println);
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 258 4 418 1 676 5 109 46 177 11 286 57 463 68 750 25 121 393 196 418 317 811 514 229 832 040
尽管Java8中函数的代码风格表示仍然让我感到困惑,但我可以肯定它与fibonacci序列的数学定义是一致的。
他说,计算速度表明它可以记忆功能
你能解释一下。任何参考/文件也很感谢。多谢了。
正如Misha所说,记住的是供应商
函数接口,因为它存储了两个私有变量n1
和n2
。然后,该对象具有可变的状态,并具有副作用。在使用平行化时可能会产生问题。
new Supplier<Long>() {
private long n1 = 1;
private long n2 = 2;
@Override
public Long get() {
long fibonacci = n1;
long n3 = n2 + n1;
n1 = n2;
n2 = n3;
return fibonacci;
}
}
相反,使用iterate
的解决方案是不可变的,并且可以并行化。它生成大小为2的long
数组流,从[1,1]开始,并迭代应用函数f->new long[]{f[1],f[0]+f[1]}
.iterate(
new long[]{1, 1},
f -> new long[]{f[1], f[0] + f[1]}
)
问题内容: 该脚本绘制控件,英雄,表面和地图: 有一个英雄,当玩家使用控件移动他时必须重新绘制,所有其他可绘制对象也必须重新绘制。问题在于绘制地图是一个漫长的过程,因此我创建的地图越大,英雄移动的速度就越慢,因为必须绘制地图的每个图块。有没有一种方法可以将所有图块以其他方法放置到一个位图,然后在canvas方法中绘制该位图? 问题答案: 最好的选择是只绘制地图在屏幕上可见的部分。这样,无论整个地图
问题内容: 我看到python 3.2在functools库中具有作为装饰器的备注。 http://docs.python.org/py3k/library/functools.html#functools.lru_cache 不幸的是,它还没有反向移植到2.7。有什么特定的原因,为什么它在2.7中不可用?是否有任何第三方库提供相同的功能,或者我应该编写自己的库? 问题答案: 有什么特定的原因,为
备注 大多数算法同时处理类型和值(参见类型计算) 算法通常返回一个新容器作为它们的返回结果;不会更改原容器(参见算法) 所有的算法都是constexpr函数对象 容器 说明 tuple 固定长度的基于索引的泛型异构序列,可将它视为异构对象中的std::vector optional 表示可选值,即可以为空的值。它有点像std::optional,除了空值也是编译时已知的外 map 无序关联数组映射
本文向大家介绍Python中的字典遍历备忘,包括了Python中的字典遍历备忘的使用技巧和注意事项,需要的朋友参考一下 备忘一下python中的字典如何遍历,没有什么太多技术含量.仅供作为初学者的我参考. interitems和iterms区别 参考 http://stackoverflow.com/questions/10458437/python-what-is-the-difference-
Spring data提供了各种用于CRUD、分页和mongob排序的存储库。当我们需要来自mongob的使用各种属性的文档时,我们倾向于编写方法或编写带有显式查询的方法,并用注释。但是如果我的文档有许多属性并且我需要各种获取文档的方法,Spring是否提供了一种“存储库方法”来接收属性和值的Map?编写各种可能很麻烦。使用QueryDSL似乎是一种选择,但需要代码生成和build.gradle更