Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 一个简单递归函数递推方程的建立_Java_Runtime_Computer Science_Pseudocode_Recurrence - Fatal编程技术网

Java 一个简单递归函数递推方程的建立

Java 一个简单递归函数递推方程的建立,java,runtime,computer-science,pseudocode,recurrence,Java,Runtime,Computer Science,Pseudocode,Recurrence,如果给我以下递归函数,我将如何为它创建一个递归方程 QUIBBLE(n) { if n = 0 return 1; else return QUIBBLE(n-1) + QUIBBLE(n-1); } 我当时在想: T(n): 2T(n-1) + 1 when n is >= 1 T(n) = 1 when n is 0, 0=>1 1=>2 2=>4 3=>8 4=>16 你看到图案了吗 诡辩(n)=数学能力(2,n) 事实上,递推方程是QUIBLE(n)

如果给我以下递归函数,我将如何为它创建一个递归方程

QUIBBLE(n) {
   if n = 0 return 1; 
   else     return QUIBBLE(n-1) + QUIBBLE(n-1); 
}
我当时在想:

T(n):  2T(n-1) + 1 when n is >= 1
T(n) = 1 when n is 0, 
0=>1 1=>2 2=>4 3=>8 4=>16

你看到图案了吗

诡辩(n)=数学能力(2,n)


事实上,递推方程是QUIBLE(n)=2*QUIBLE(n-1),其种子为QUIBLE(0)=1

好的,通常良好的开始方法是写出一些样本输入的递推树

假设n=3

/* 1 call */   QUIBBLE(3)            
/* 2 calls */  = QUIBBLE(2) + QUIBBLE(2)
/* 4 calls */  = QUIBBLE(1) + QUIBBLE(1) + QUIBBLE(1) + QUIBBLE(1)
/* 8 calls */  = QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0) + QUIBBLE(0)
               = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
               = 8
通过查看上面的树,我们可以看到,每个函数调用时,树都会分成两个分支

这也向我们表明,函数QUIBBLE显然是指数函数,返回
2^n

现在,您的解决方案几乎是正确的

n>=1
时,你不需要的是等式的
+1
部分

T(n):  2T(n-1) + 1 when n is >= 1
//               ^
//                you don't need this
这里有一个简单的检查来了解原因。什么是
T(1)

根据你的方程式,答案是:

T(1) = T(0) + T(0) + 1 = 1 + 1 + 1 = 3
但是,
2^1==2
,而不是
3

因此,答案应该是

T(n):  2T(n-1) when n is >= 1
T(n):  1 when n is 0