java - 以下代码的递归关系是什么:
问题描述
代码如下:
static void fun1(int n)
{
int i = 0;
if (n > 1)
fun1(n - 1);
for (i = 0; i < n; i++)
System.out.print(" * ");
}
我的回答是:
T(n) = { n + 2 : if n <= 1
{ T(n-1) + n + 2 : if n > 1
基本情况包含一项分配和一项比较(均在恒定时间内)以及以线性时间运行的 for 循环。
递归情况与基本情况以及递归调用 T(n-1) 相同。
这就是为什么我认为我是正确的,但这个问题没有答案,所以外部的声音将不胜感激。
解决方案
你的答案是正确的,但它可以写成更一般的方式,像这样:
T(n) = T(n-1) + n + const, if n > 1
T(n) = n + const, if n <= 1
在这里const
你通常选择值1,以便于计算,因为它对时间复杂度没有影响。
推荐阅读
- android - 如果 collapse_key 没有传入有效载荷,推送通知会被折叠吗?
- css - 如何更改标题属性里面的样式标签?
- python-3.x - 如果不是无,则包括在列表中
- java - 添加 ContentNegotiatingViewResolver 时出现内部服务器错误
- ecmascript-6 - 如何在 ES6 类中声明静态生成器方法
- dart - Flutter/StatefulWidget之间如何传递和获取数据
- php - 在 Laravel 5.6 中播种数据库时出现 Illuminate\Database\QueryException 错误
- laravel - 如何从 laravel url 中删除 public
- reactjs - 如何将 create-react-app 部署到 Google Cloud
- tsql - 对象名称中不允许使用 SqlCmd 变量引用