我在努力解决这个问题。以前的问题我没有遇到任何问题。现在这个是我需要做的。
我正在尝试使用求和来派生运行时的表达式。 然后解决它们以获取表达式 没有用求和写的T(n)或T(n,m)。 我想计算println作为任何变量n和/或m的函数执行的次数。
任何帮助都会有所帮助。他在这里谈到的数学技术是什么?如果我知道
,我会搜索并做更多的研究答案 0 :(得分:0)
我相信术语"某些数学技术"是指http://en.wikipedia.org/wiki/Master_theorem
答案 1 :(得分:0)
您有以下 while循环:
int i = n;
while (i >= 1){
System.out.println("tick");
i = i/2;
}
我们可以将其重写为 for循环,以及下面的示例:
int i;
for(i=n; i<= 1; i= i/2){
System.out.println("tick");
}
让我们进行一些迭代,我们将给出&#39; n&#39;一个值,并查看print语句的执行次数。
Value of 'n' #Executions of the print statement
n=1 1
n=2 2
n=3 2
n=4 3
n=5 3
n=6 3
n=7 3
n=8 4
通过上述内容,我们可以了解print语句的执行次数。当&#39; n&#39;看起来执行次数增加了。是2的幂。所以,让我们看一下2的幂的迭代次数。
Value of 'n' #Executions of the print statement
n=1 1
n=2 2
n=4 3
n=8 4
n=16 5
n=32 6
好的,我们现在可以看到另一种模式,因为2的幂增加1,例如2 ^ 1,2 ^ 2等。迭代次数增加1,所以让我们重写上面的内容:
Value of 'n' #Executions of the print statement
n=1 = 2^0 1
n=2 = 2^1 2
n=4 = 2^2 3
n=8 = 2^3 4
n=16 = 2^4 5
n=32 = 2^5 6
所以看起来我们可以把第二个引出来,只需添加一个来获得print语句的执行次数。例如,当n = 32时,我们将此数字更改为2的幂,如2 ^ 5,然后我们将数字改为&#39; 2&#39;被提出的是&#39; 5&#39;并向它添加1 5 + 1以获得6的迭代次数。
因此,可用于解决此循环的函数是: f(n)=(log 2 n)+ 1
您还可以使用求和来计算 while循环的函数。 您可以看到一些examples用于将循环更改为汇总。