微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

递推关系 T(n) = T(T(n - 1)) + 1 有什么解吗?

如何解决递推关系 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 举报,一经查实,本站将立刻删除。