百日百题-基础数学1

#coding=utf-8

# -------------------------------------
#  @Time : 2017/8/20 20:00
#  @Author: 就是我啦
#  @E-mail: 不告诉你
#  @Name: Math1.py
#  @Software: PyCharm Community Edition
# -------------------------------------


from math import sqrt


def factorial(n):
    ''' 第一题,求阶乘 '''
    facs = [1,1]
    for i in range(2,n+1): 
        facs.append(facs[-1]*i)
    return facs[n]


def combination(n,m):
    ''' 第二题,求组合数 '''
    if m>n: 
        return 'Combination Error'
    else: 
        return factorial(n)/factorial(m)/factorial(n-m)


def permutation(n,m):
    ''' 第三题,求排列数 '''
    if m>n: 
        return 'Permutation Error'
    else: 
        return factorial(n)/factorial(n-m)


def fibonacci(n):
    ''' 第四题,求斐波那契数列 '''
    fibs = [0,1]
    for i in range(n-1): 
        fibs.append(fibs[-2]+fibs[-1])
    return fibs[n]


def heron_formula(a,b,c):
    ''' 第五题,利用海伦-秦九韶公式求三角形面积 '''
    t1 = min(a,b)
    t2 = max(a,b)
    t3 = min(t2,c)
    t4 = max(t2,c)
    if t1+t3 < t4:
        return 'Error number'
    else:
        p = 0.5*(a+b+c)
        S = sqrt(p*(p-a)*(p-b)*(p-c))
        return S


def catalan(n):
    ''' 第六题,求明安图-卡塔兰数 '''
    hn = factorial(2*n)/factorial(n)/factorial(n+1)
    return hn

不定期更新

你可能感兴趣的:(百日百题)