我想用一种方法(在Scala中)计算给定起始数,比例因子和大小的几何序列。
例如,起始值为1,比例因子为2,大小为5会产生一个列表或序列:
1 2 4 8 16
答案 0 :(得分:2)
试试这个Stream.iterate(1)(_*2).take(5).toList
答案 1 :(得分:0)
您可以在 Scala :
中使用Stream
scala> val TWO = BigInt(2)
scala> Stream.from(0).map(x => TWO.pow(x)) take 5 toList
res: List[scala.math.BigInt] = List(1, 2, 4, 8, 16)
答案 2 :(得分:0)
使用scanLeft
,部分结果会累积到生成的集合中,因此请考虑
(1 to 4).scanLeft(1)( (a,_) => a*2)
lambda函数包括由a
表示的值,用于直到当前迭代的累积结果,由2
计算。扫描以初始值1
开始,并执行四个额外的结果(直到第5项)。