1个不稳定版本
0.1.0 | 2022年2月11日 |
---|
#915 in 数学
16KB
348 行
小型斐波那契数列库
这个库非常小巧,只有一个单一的目的。
一个没有依赖项的库,可以计算并显示大的斐波那契数。
请以平常心看待“大”。目前,在1-2百万范围内显示内容需要几秒钟。但如果你不需要那么疯狂,你将快速得到答案。
特性
一个非常酷的结构体“Sequence”,它将生成斐波那契数列作为迭代器!
for (n, value) in fib_sequence::Sequence::new().enumerate().take(100) {
println!("f({}) = {}", n, value);
}
如你所见,它默认是一个无限迭代器(意味着当你的电脑开始过热时,它就会停止)。所以使用类似take的方法来使其有限。
哦,如果出于某种原因,你只想知道第69420个斐波那契数,你不必遍历序列中的所有这些项。我有一个更快的选项
println!("{}", fib_sequence::nth(69420));
nth函数遵循序列的数学惯例。
f(0) = 0; f(1) = 1; f(2) = 1; ...
我真心建议你避免去到百万以上。这个函数目前是二次的(而且可能保持这样,因为我懒得实现减法,这是实现快速卡拉斯加乘法所必需的)。所以从1到2百万在我的机器上是从2.36秒跳到大约10秒!
啊,为什么它返回字符串??
因为我说了!
不要误会我,我喜欢数字和涉及数字的结构体。然而,我只想让这个库用于人们可以在10进制中操作斐波那契数。所以我想到,为什么我要依赖这个数值抽象,而我不能直接使用字符串,这是每个人都懂得如何使用并且可以轻松处理的东西?你可以将其分割成一个字符向量,计算有多少个6出现,使用len()函数计算有多少个数字等。
你会添加[插入功能]吗?
可能不会。这个库做的一切我都需要。
好吧,但我还可以提建议吗?
当然可以!如果它足够简单,我可能会在未来的版本中添加它。只要在github仓库中给我你的建议。