c++ - 递归函数c ++的复杂性
问题描述
*我正在尝试计算以下函数的复杂度 Big-Theta-Notation:变量 i 是常量 == 3 *
void g(int i, int n) {
if (i>0) {
for (int j=n+10; j>0; j-=5) {
g(i-2, n);
}
}
}
因为是递归函数,我想应该用Master Theorem来计算,但实际上没有n的除法。我会非常感激任何帮助!
解决方案
递归关系为 T(i, n) = (n+10)T(i-2, n)/5。
奇数和偶数的项i
都是具有乘法因子 (n+10)/5 的几何级数。这解决了 T(i, n) = O((n/5)^(i/2)) 或 O(sqrt(n/5)^i) 如果您愿意。
推荐阅读
- xml - 在 xml 输出中使用保留的 cobol 名称
- python - 使用从 Inception 模型处理的 LSTM 对视频进行分类
- mysql - Logstash 转换输出日期格式
- php - 列出自定义帖子类型标签名称和 slug
- electron - 为什么我的 MenuItem 图标没有显示在 Electron 1.8.1 的顶层?
- javascript - 如何在 JavaScript 中计算日期,以获得月份中的同一天 + 某个月份(变量)
- python - Pandas read_excel AttributeError:'Book'对象没有属性'extract_formulas'
- c++ - 错误:没有用于调用 'xercesc_3_2::DOMImplementation::createDocument(int, const wchar_t [19], int)' 的匹配函数
- typescript - TypeScript 接受非数字/字符串值,尽管预期的参数类型是数字
- python - 如何在 python 和 SQL 中使用 Microsoft Access 数据库文件