我正在为考试而学习,我遇到了这个问题,我对这门课程不太擅长,我完全被它难住了。我真的很感激一些帮助!
假设您可以访问在时间 O(n) 中运行的算法 isprime(n)(例如,蛮力检查所有小于 n 的数的可分性)。以下代码计算小于或等于其输入参数的素数。
boolean numprimes(int n) { if (n == 1) { return 0; } else if (isprime(n)) { return numprimes(n − 1) + 1; } else { return numprimes(n − 1); } }
目标是分析 num primes 的运行时间。通过执行以下操作来实现此目标:
(a) 写一个递归定义 T (n) 算法在大小为 n 的实例上的运行时间。
(b) 求解T(n) 的递归定义,通过重复代入、猜测、归纳证明猜测、最后根据你的猜测推导出封闭形式的方法得到一个封闭形式。或者,您可以使用重复替换来猜测封闭形式,并通过归纳证明您的封闭形式正确。
非常感谢,我将非常感谢任何帮助!