recursion - 编写具有指定复杂度的递归算法
问题描述
我正在学习算法分析课程,一个练习让我陷入困境,因为它要求的复杂性太具体了,这就是问题所在:
编写一个递归算法,给定一个整数 n 作为输入,打印 Θ(n^log4 11(log n)) 星号。为了证明复杂性,您可以使用主定理。
解决方案
回忆一下主定理的第二种情况。如你所知,
T(n) = aT(n/b)+f(n)
如果f=Theta(n^log_{b}{a})
那么 `T(n) = Theta(n^log_{b}{a}*logn)
因此,您需要对输入大小的 0.25 进行 11 次递归调用,并且在每次调用中执行n^log{4}{11}
“工作”
因此,一个直接的方法将是:
define f (n):
m = floor(log_{4}{11})
print ('*' * pow(n,m))
for i in (0,11):
f(floor(n/4))
推荐阅读
- xpath - How to skip paragraphs with comments in XPath expression?
- java - 未读取外部 Spring 引导属性
- c# - 如何使用变量值来引用另一个变量或对象(即其他语言中的 EVAL)
- tensorflow - 在 raspberry pi3 上安装 TensorFlow 期间出现 HadoopFileSystem 加载错误
- highcharts - Display Date and time on highcharts
- javascript - XY 图表使用数据源动态排列系列
- php - 如何获取我刚刚添加到商店功能中的用户 ID() Larevel 6.0
- java - 即使我的课程是公开的,Intellij 也无法解析符号
- python - 我该如何解决这个错误:没有足够的值来解包(预期 4,得到 1)
- ffmpeg - avcodec_find_encoder_by_name() 返回 NULL