Recursion 采用2个参数的递归公式
我可以从递归中创建一个递归公式,其中它只传递一个参数(类似于$T(n/2)$)。但是,对于这样的情况,$u$和$v$的值不同,我如何将它们组合在一起?这就是问题所在: 对递归函数RecursiveFunction(n,n)的调用,对于某些n>2Recursion 采用2个参数的递归公式,recursion,asymptotic-complexity,Recursion,Asymptotic Complexity,我可以从递归中创建一个递归公式,其中它只传递一个参数(类似于$T(n/2)$)。但是,对于这样的情况,$u$和$v$的值不同,我如何将它们组合在一起?这就是问题所在: 对递归函数RecursiveFunction(n,n)的调用,对于某些n>2 RecursiveFunction(a, b) if a >= 2 and b >= 2 u=a/2 v=b-1 RecursiveFunction(u, v) 最终目标是找到最坏情况下运行时间的严格渐近界限,但我首先需
RecursiveFunction(a, b)
if a >= 2 and b >= 2
u=a/2
v=b-1
RecursiveFunction(u, v)
最终目标是找到最坏情况下运行时间的严格渐近界限,但我首先需要一个公式。事实上,这有两个不同的答案,取决于
a
和b
的相对大小
该函数可以编写如下:
其中,C
是每次调用完成的一些常量工作(if
语句,将u,v
推到调用堆栈上等)。由于这两个变量独立演化,我们可以分别分析它们的演化
<> >代码> A<代码> -考虑以下函数:
将迭代案例扩展m
次:
停止条件a<2
如下:
b
-如前所述:
T(a,b)
的复杂性取决于哪个变量首先达到其停止条件,即m
和n
之间的最小值:
实际上,a和b的大小是相同的,因为一般设置是递归函数(n,n),对于某些n>2,它会对结果进行任何更改吗?在这种情况下,它是
O(logn)
,因为在渐近情况下logn
总是小于n