我正在为数据结构和算法课程进行旧的考试,似乎无法弄清楚如何解决此问题。
问题(d)查找通过以下递归方法执行的乘法次数的递归关系:
static int f(int N)
{
if (N > 1) return 2*f(N - 1);
else return 3;
}
答案: T(N) = T(N − 1) + 1
我不完全了解这种关系如何找到乘法的数量?
T(2) = T(2 - 1) + 1 = 2
T(3) = T(3 - 1) + 1 = 3
我尝试在关系中插入2和3,但仍然看不到乘法的数量。我在正确的轨道上吗?
答案 0 :(得分:2)
对于f(N)
,您的递归调用比对f(N-1)
的递归调用多,因此,乘法也多,
T(N) = T(N-1) + 1
具有基本情况T(1) = 0
。