【发布时间】:2011-08-07 23:24:09
【问题描述】:
我写了一个函数来显示素数和特定数 n 的因数。
bool PrimeFactor(int n){
int count = 0;// count divisors
for (int i = 2 ; i < n; i++){
if ( n % i == 0 ){
if ( PrimeFactor(i)){
cout << i << endl;
}
count ++;
}
}
if (count > 0)//not prime
return false;
return true;
}
结果可能会在某些地方重复,但这不是大问题。我不知道如何计算这个递归函数的时间复杂度。
【问题讨论】:
-
取决于
PrimeFactor的作用。 -
为什么这个函数是递归的? (顺便说一句,我将你的代码包装成一个名为
PrimeFactor的函数,因为你说它是递归的。我希望我没看错。) -
另外,请注意,此函数将返回
true为 0 和 1,两者都不是素数。 -
它是如何终止的?如果
PrimeFactor(2)被调用,那么2 % 2为零,所以它会一直循环? -
@Jeff:不,第一次迭代不会满足循环条件。
标签: c++ time-complexity