Javascript 有没有什么很酷的方法可以使用惰性求值序列来定义/calc PI?
我在javascript上使用lazy.js 我想知道是否有一个很酷的方法来定义(实际上不是计算)由惰性评估授权的PI 我知道lazy求值是按需调用的,但是如何在lazy求值代码中定义PI呢 例如,我们可以在lazy.js中定义自然数无限序列:Javascript 有没有什么很酷的方法可以使用惰性求值序列来定义/calc PI?,javascript,node.js,functional-programming,lazy-evaluation,Javascript,Node.js,Functional Programming,Lazy Evaluation,我在javascript上使用lazy.js 我想知道是否有一个很酷的方法来定义(实际上不是计算)由惰性评估授权的PI 我知道lazy求值是按需调用的,但是如何在lazy求值代码中定义PI呢 例如,我们可以在lazy.js中定义自然数无限序列: var _ = Lazy; var natural = function(n) { return n; }; var _natural = _.generate(natural); 当然,因为它是按需调用的,所以您只能获得一部分自然数,如 va
var _ = Lazy;
var natural = function(n)
{
return n;
};
var _natural = _.generate(natural);
当然,因为它是按需调用的,所以您只能获得一部分自然数,如
var n100 = _natural.take(100).toArray();
有没有办法定义类似π的自然数
谢谢 有一种很酷的方法,可以通过展开无限多个连续近似值来缓慢地计算pi。这些就是所谓的“无界龙头”算法(无界的,因为它们利用惰性产生无限多更好的答案) 参见,其中给出了一个(故意模糊的)示例:
pi = g(1,0,1,1,3,3) where
g(q,r,t,k,n,l) =
if 4*q+r-t<n*t
then n : g(10*q,10*(r-n*t),t,k,div(10*(3*q+r))t-10*n,l)
else g(q*k,(2*q+r)*l,t*l,k+1,div(q*(7*k+2)+r*l)(t*l),l+2)
pi=g(1,0,1,1,3,3),其中
g(q,r,t,k,n,l)=
如果4*q+r-t