def pi(N): # step 1: 创建一个奇数序列: 1, 3, 5, 7, 9, ... natuals = filter(lambda t: (t + 1) % 2 == 0, itertools.count(1)) # step 2: 取该序列的前N项: 1, 3, 5, 7, 9, ..., 2*N-1. n2 = itertools.takewhile(lambda u: u <= 2 * N - 1, natuals) # step 3: 添加正负符号并用4除: 4/1, -4/3, 4/5, -4/7, 4/9, ... o = map(lambda p: (1 / p) * ((-1) ** ((p + 1) / 2 + 1)), n2) # step 4: 求和: end = functools.reduce(lambda w, s: w + s, o) return end * 4
Sign in to make a reply
frantumaglia