通过我对复发的研究,我试图解决这种复发 你可以帮我查一下吗
public static int java(int N) {
if (N == 1)
return 1;
return (java(N/2) + java(N/2));
}
我认为这是等式
C(1) = 1
CN = 2CN/2 + 1
,复杂度为O(log N)
你可以帮我查一下吗
答案 0 :(得分:2)
public static int java(int N) {
if (N == 1)
return 1;
return 2 * java(N/2);
}
不是两次调用相同,而是将它乘以2.不需要为同一输入再次计算它。
复杂性为O(log N)
,因为您每次都将问题除以2
因子。