【问题标题】:Recursive method on palindrome回文的递归方法
【发布时间】:2021-03-24 07:10:22
【问题描述】:

我应该如何分析单词中字符数的运行时复杂度。

【问题讨论】:

  • 可以使用word[-1]获取最后一个字符,不需要写wordLenght - 1
  • 每次递归时字符串的大小如何变化?递归的次数和原来的长度有什么关系?
  • @Barmar 这就是问题所在,如果 word 中的第一个单词不等于单词 lenght - 1,它会返回 false,所以我相信这是一个 O(n^2)。我不明白它递归的次数和第一个长度之间的关系,这就是我需要帮助的原因。

标签: python recursion time-complexity palindrome


【解决方案1】:

是 O(n)。

当您调用该函数时,如果其中一个基本情况条件为真,它会立即返回。

每次递归时,它会将word 参数的大小减少2 个字符(第一个和最后一个)。所以最大递归数是len(word)/2。在计算复杂度的时候,我们忽略了常数系数,所以递归的次数是O(len(word)),也就是说是O(n)。

【讨论】:

  • 我们是否总是因为复杂性而忽略常数系数?
  • 如果是这样的话,那就非常合乎逻辑了,谢谢!
  • 是的,我们有。因为我们只关心时间如何随着输入大小的增加而变化。对于 O(n),如果输入大小翻倍,则时间翻倍,系数无关紧要。
猜你喜欢
  • 2015-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 2017-02-05
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多