【问题标题】:Calculate number of function calls for any size N计算任意大小 N 的函数调用次数
【发布时间】:2022-11-23 14:14:36
【问题描述】:

我试图了解一种方法来编写 fun1 的 print 语句将被调用多少次的任何大小 N。以求和形式编写。这更像是一个分析问题。我知道我可以设置一个计数变量并打印结果。 S 是 N 项的数组。 N 是大小。

def myAlg(S,n):
    for i in range(1,n+1):
        for j in range(1,i+1):
            for k in range(1,j+1):
                if j > k:
                    print('fun1 called, and count is now', count)
                else:
                    print('fun2 called')

老实说,我对如何处理这个问题有点迷茫。任何解释将不胜感激。

【问题讨论】:

    标签: python algorithm analysis


    【解决方案1】:

    对于前两个循环,我们有算术级数之和1+2+3+...+n,结果是

    T(n) = n*(n+1)/2
    

    称为三角数 (1,3,6,10,15,21...)

    所以k的循环被执行了T(n)次,并且执行了内部部分

    Q(n) = sum(T(i),i=1..n) = n*(n+1)*(n+2)/6
    

    次,序列被称为四面体数(1,4,10,20,35,56 ...)

    但是我们必须减去 T(n) 以排除 fun2 调用(每个循环一个)

    Result = n*(n+1)*(n+2)/6 - n*(n+1)/2 = (n-1)*n*(n+1)/6
    

    这是没有最后一项的相同Q序列,所以

    Result(n) = Q(n-1) = (n-1)*n*(n+1)/6
    

    【讨论】:

      猜你喜欢
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多