Java (c^k)的大O表示法
下面的代码给了我一个O(n)。如何为时间复杂度为O(c^k)的循环编写代码Java (c^k)的大O表示法,java,big-o,time-complexity,Java,Big O,Time Complexity,下面的代码给了我一个O(n)。如何为时间复杂度为O(c^k)的循环编写代码 不知道你在问什么,但是你可以通过简单地摆脱重复的递归(不是递归地计算两次相同的东西),很明显地修改这段代码并赢得很多 以这种方式编写将允许您编写while循环而不是递归。O(c^k)-指数时间复杂度算法是,例如,蛮力搜索和旅行商问题 我给你举一个暴力搜索的例子。如果您有一组长度为c,密码长度为k。那么你需要一段时间来破解密码。看看这个问题的答案:如果(y%2==0){int res=power(x,y/2);return
不知道你在问什么,但是你可以通过简单地摆脱重复的递归(不是递归地计算两次相同的东西),很明显地修改这段代码并赢得很多 以这种方式编写将允许您编写while循环而不是递归。
O(c^k)
-指数时间复杂度算法是,例如,蛮力搜索和旅行商问题
我给你举一个暴力搜索的例子。如果您有一组长度为
c
,密码长度为k
。那么你需要一段时间来破解密码。看看这个问题的答案:如果(y%2==0){int res=power(x,y/2);return res*res;}这会给你一个O(c^k)吗?你的目标是使算法更复杂吗?为什么需要指数时间复杂度?public void run(int n){System.out.println(power(3,n));}public int power(int c,int n){int result=1;for(int i=0;iint power(int x, unsigned int y)
{
if( y == 0)
return 1;
else if (y%2 == 0)
return power(x, y/2)*power(x, y/2);
else
return x*power(x, y/2)*power(x, y/2);
}
if (y%2 == 0) {
int res = power(x, y/2);
return res * res;
}