Py小郑 2022-01-29 20:30 采纳率: 96.6%
浏览 39
已结题

Python关于自带函数效率低的情况?

两段代码只有函数C不同 ,函数C用于计算组合数
其中一个方法利用常规的计算 另一种方法利用python自带的factorial函数来计算
不是说自带的函数运行起来会更快吗?为啥当数据逐渐增大到比较大的时候 后者好久不出结果
前者秒出 !?这到底是为啥
除此之外我试验过,如果单独调用两个函数进行比较,后者比前者快,这也印证了自带函数运行起来会快一些 ,可是放到整段代码里面(一个蓝桥杯题的完整题解),后者显得好差劲?半天没答案!恳请解答


N=int(input())

from math import factorial
def C(n,m):
    return int(factorial(n)/(factorial(m)*factorial(n-m)))

def find(j,N):
    l,r=2*j,N
    while l<=r:
        mid=(l+r)//2
        if C(mid,j)==N:
            print(int(mid*(mid+1)/2)+j+1)
            return True
        elif C(mid,j)>N:
            r=mid-1
        else:
            l=mid+1
    return False  
for i in range(16,-1,-1):
    if find(i,N):
        break


N=int(input())

def C(a,b):#阶乘函数
    res=1
    i,j=a,1
    while j<=b:
        res=res*i/j
        i-=1
        j+=1
    return res
def find(j,N):
    l,r=2*j,N
    while l<=r:#二分模板
        mid=(l+r)//2
        if C(mid,j)==N:
            print(int(mid*(mid+1)/2)+j+1)
            return True
        elif C(mid,j)>N:
            r=mid-1
        else:
            l=mid+1
    return False  
for i in range(16,-1,-1):
    if find(i,N):
        break


  • 写回答

2条回答 默认 最新

  • ~白+黑 Python领域新星创作者 2022-01-30 11:52
    关注

    自带函数也不一定对于你的问题是最好的实现,没必要纠结,如果觉得你自己的好用,那就用自己写的好了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月27日
  • 已采纳回答 2月19日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 求指导ADS低噪放设计
  • ¥15 CARSIM前车变道设置
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存