Java 这种方法的时间复杂度是多少?
下面是我上面提到的方法的代码。这是解决经典河内塔问题的算法的一部分。我只是不知道这个问题的时间复杂性,因为它有相当多的递归Java 这种方法的时间复杂度是多少?,java,time-complexity,Java,Time Complexity,下面是我上面提到的方法的代码。这是解决经典河内塔问题的算法的一部分。我只是不知道这个问题的时间复杂性,因为它有相当多的递归 这是类Tower中的一个方法。moveTopto是O1,因此不应影响运行时 递归算法复杂性分析的良好解释 注:如果你懒得打开链接理解,只想得到答案-复杂度~O2^n,这取决于moveTopto和buffer.moveTopto的时间复杂度 基本上要计算复杂度,你必须把时间加起来。n的时间将是n-1的时间,加上moveTopto的时间加上buffer.moveTopto的时
这是类Tower中的一个方法。moveTopto是O1,因此不应影响运行时 递归算法复杂性分析的良好解释
注:如果你懒得打开链接理解,只想得到答案-复杂度~O2^n,这取决于moveTopto和buffer.moveTopto的时间复杂度 基本上要计算复杂度,你必须把时间加起来。n的时间将是n-1的时间,加上moveTopto的时间加上buffer.moveTopto的时间加上常数。现在您可以看到,它将至少具有ON,但可以具有更高的时间复杂度,特别是当buffer.movetop具有非常量时间复杂度时
如果你的意思是Buffer.moveTopto,那么时间大约是n-1时间的两倍,也就是说,tn=2*tn-1+常数。这就给出了O2^n.这个语句缓冲区是什么,moveDisksn-1,destination,this?时间复杂度也取决于moveTopto。包含它以获得更好的答案。请将完整的代码粘贴到此处,以便我们更好地理解它。现在,您需要告诉我们buffer.moveDisks是什么,该方法的时间复杂度是多少?@CydrickT请删除您的评论,尝试清理此问题此视频实际上包含了我需要的所有内容。我没想到人们会制作一个关于河内塔运行时间问题的视频!视频更有用,但这绝对是更有效的答案!
class Tower {
public void moveDisks(int n, Tower Destination, Tower Buffer) {
if (n > 0) {
moveDisks(n-1, Buffer, Destination);
moveTopto(Destination);
Buffer.moveDisks(n-1, Destination, this);
}
}
}