【问题标题】:Time complexity for recursive function with random input [closed]具有随机输入的递归函数的时间复杂度
【发布时间】:2017-11-28 05:54:51
【问题描述】:

我是 C 编程的初学者,所以我的时间复杂度函数需要一些帮助。

int function(int n)
{ if (n <= 1)
    return n;
int i = random(n-1);
return test(i) + test(n - 1 - i);
}

我不知道如何处理这个问题,因为具有 O(1) 复杂度的随机函数返回随机数。

【问题讨论】:

  • 你的问题是什么?
  • 你还有什么问题?
  • 请注意,您不会显示random()test(),而且这两个函数都不是由C 标准定义的。这使得很难知道他们在做什么。 random() 是否返回 0 与其参数之间的随机整数?这里没有递归,除非function()test()random() 调用——如果它们确实调用function(),那么它是间接递归而不是直接递归。 (test()function() 的拼写错误,还是function()test() 的拼写错误?如果是这样,那么一旦你修复了命名,你就可以直接递归了。)

标签: c algorithm recursion random time-complexity


【解决方案1】:

我不知道如何处理这个问题,因为具有 O(1) 复杂度的随机函数返回随机数。

很明显,您将random(n-1) 调用本身视为一个简单的(恒定时间)调用。孤立地进行,这是直截了当的。有趣的是调用返回的值对性能有什么影响。

  • 提示:首先考虑算法的最佳情况和最差情况的性能。

  • 提示:出于分析目的,考虑random 的假设版本,它生成与随机数相反的数列:-)

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2018-08-18
    相关资源
    最近更新 更多