如何解决递推关系 T(n) = T(T(n - 1)) + 1 有什么解吗?
这个递归关系有什么解决方案
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(0)
的值,并假设 n = 0,1,2 ...
有一个解决方案:
T(n) = T(0) + n
证明:
n | T(n) | T(n) |
---|---|---|
0 | T(0) = | X |
1 | T(1) = | T(0)+1 = (X)+1 |
2 | T(2) = | T(1)+1 = (X+1)+1 |
3 | T(3) = | T(2)+1 = (X+1+1)+1 |
4 | T(4) = | T(3)+1 = (X+1+1+1)+1 |
5 | T(5) = | T(4)+1 = (X+1+1+1+1)+1 |
6 | T(6) = | T(5)+1 = (X+1+1+1+1+1)+1 |
7 | T(7) = | T(6)+1 = (X+1+1+1+1+1+1)+1 |
8 | T(8) = | T(7)+1 = (X+1+1+1+1+1+1+1)+1 |
如果解决方案/假设可以接受,请分享。 (:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。