我正处于学习数据结构类递归的第一阶段,我们的教授告诉我们,我们应该能够采用递归方法,并能够提出问题大小和递归方程。当问题大小取决于一个变量N时,我能够写出一个递推方程,为了简单起见,假设这是一个正数,例如:只要n> 1,该方法就会打印输入数字。第一次通话时为0。
public static int simpleCounter(int N) {
if (n == 0) {
return;
}
else {
return 1 + simpleCounter(N - 1);
}
}
然而,当问题规模更复杂时,例如取决于2个变量,我无法创建递归方程,因为我不知道如何处理变量。此方法计算可以相互减去2个数字的次数,假设第一次调用的计数总是为零,而a和b都是正数。
public static int complexCount(int a, int b, int count) {
if ((a - b) <= 0) {
return 0;
}
else {
count = 1 + complexCount((a - b), b, count + 1)
return count;
}
}
那么这里的问题大小是多少?是不是与a和b都有关系? 在不知道问题大小的情况下,我无法得出递归方程: 基数:T(0)= 1 复发:T(N)= 1 +Δθ
答案 0 :(得分:0)
递归关系并不总是需要涉及单个变量,事实上,在多个变量中存在递归关系是很常见的。这里,递归关系是
T(a,b)= 1 + T(a - b,b)(如果a≥b)
T(a,b)= 1(否则)
然后,您可以根据a和b来解决此递归关系,以获得最终解决方案。
希望这有帮助!