斯特林公式(取n的阶乘的近似值的数学公式,求解阶乘的复杂度降低到对数级)
```python
import math
def fact(n):
r = 1
z = n + 1
p = [1.000000000190015, 76.18009172947146, -86.50532032941677,
24.01409824083091, -1.231739572450155, 1.208650973866179E-3, -5.395239384953E-6]
d1 = math.sqrt(2 * math.pi) / z #math.sqrt返回一个数的平方根 math.pi返回π值
i = 1
d2 = p[0]
while i <= 6:
d2 += p[i] / (z + i)
i += 1
d3d4 = math.pow((z + 5.5), (z + 0.5))*math.exp(-(z + 5.5)) #math.pow 返回x的y次幂 math.exp e的x次方
d = d1 * d2 * d3d4
r = int(d)
return r
if __name__ == '__main__':
print(fact(10))
阶乘
```python
import math
def fact(n):
r = 1
for i in range(0,n):
r *= (i+1)
return r
if __name__ == '__main__':
print(fact(5))
斐波那契数列
def fibonacci_inner(n, r):
if n==0:
return 0
if n == 1 or n == 2:
return r
return fibonacci_inner(n-1, fibonacci_inner(n-2, r+1))
def fibonacci(n):
return fibonacci_inner(n, 1)
if __name__ == '__main__':
print(fibonacci(6))