recursion - 如何找到这个递归函数的时间复杂度?
问题描述
我试图在下面找到递归函数的时间复杂度。我试图绘制树,但它令人困惑,因为在 if 条件下,该函数被调用一次,否则调用两次。
为了给出一些上下文,该函数在树的节点上调用。任务是计算每个节点的最大评分。规则是,如果您将某个节点添加到评级中,则不能将其子节点添加到该节点,但如果您不添加它,则可以添加或不添加哪些子节点。
这是功能:
static int solve(Node node, boolean take) {
int result;
if(take) {
result = node.rating;
for(Node child : node.children) {
result += solve(child, false);
}
return result;
}
result = 0;
for(Node child : node.children) {
result += Math.max(solve(child, true), solve(child, false));
}
return result;
}
解决方案
推荐阅读
- angular - AES 加密在前端(Angular)中不起作用
- questdb - Questdb 与 Grafana 8 兼容吗?
- python-3.x - 是否可以选择安装tensorflow的文件?
- python - 需要能够执行多个项目的功能,但它不能工作,为什么?
- authentication - 如何在不使用 url 参数的情况下将数据传输到另一个域?
- javascript - 如何从数组中获取包含相同元素的子数组?
- java - 使用 Node 的 setTextContent 方法防止重新编码 & 符号
- mongoose - Mongoose limit nested array return
- php - 组合框 2 未显示输出中的值 (php)
- r - R - 如何绘制 Openstreetmap 基础层并将其与 ggplot2 中的栅格对象叠加?