【问题标题】:Is there any solution for recurrence relation T(n) = T(T(n - 1)) + 1?递归关系 T(n) = T(T(n - 1)) + 1 有什么解吗?
【发布时间】: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


【解决方案1】:

有什么解决办法

取决于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

如果解决方案/假设可以接受,请分享。 ( :

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多