【发布时间】:2021-08-30 14:27:19
【问题描述】:
这个递归关系有什么解决办法
T(n) = T( T( n - 1 ) ) + 1
来自类似 C 语法的代码
Algo(int n)
{
printf("%d ->",n);
return (n >= 1)?Algo(Algo(n - 1))+1:1;
}
#include <stdio.h>
int main(void){
printf("\tEnd: %d",Algo(3));
return 0;
}
结果:
3->2->1->1->2->1->1 结束:3
如何找到这种关系的时间复杂度?
谢谢
【问题讨论】:
-
如果基本情况是
T(1) = 1,那么T(n) = n。归纳证明:如果T(n - 1) = n - 1,那么T(n) = T(T(n - 1)) + 1 = T(n - 1) + 1 = n - 1 + 1 = n。 -
它还会返回吗?似乎是无限递归。
-
'时间复杂度'将取决于你是想递归函数..还是你想使用简化的函数。
标签: algorithm data-structures tree time-complexity recurrence