我有这个算法(黄金比例):
public static float golden(int n){
float res;
if(n == 0) {
res = 1;
} else {
res = (float) (1.0 + (1.0 / golden(n-1)));
}
return res;
}
我认为T(n)公式是 T(n-1)。我可以按照这个公式得到复杂性。
T(n)= aT(n - b)+ c ^ n p(n)
和这一个:
什么是p(n)和c?
答案 0 :(得分:0)
对于每个 n> 0 对Warning: require_once(/Controller/BulletinController.php): failed to open stream: No such file or directory in /Library/WebServer/Documents/WEBB_SERVER/6.2.1x/index.php on line 2
Fatal error: require_once(): Failed opening required '/Controller/BulletinController.php' (include_path='.:') in /Library/WebServer/Documents/WEBB_SERVER/6.2.1x/index.php on line 2
的调用导致一定数量的算术运算和一次递归调用,因此您可以将时间复杂度函数 T(n)的重复值写为< / p>
T(n)= T(n-1)+ k,n> 0
其中 k 是每次通话中的操作次数。这是顺序搜索的递归关系。
现在您可以应用您在问题中提到的公式。回想一下,公式中的 d 是多项式 p(n)的次数。在这里
a = 1,c = 1,b = 1,p(n)= k,
因此 d = 0 ,现在应用你的公式得到 a = c ^ b ,因此第二种情况适用,所以
T(n)= Theta(n ^ {d + 1} c ^ n)= Theta(n)。
这给出了最终答案 T(n)= Theta(n)。