Die FrageWas die Zeitkomplexität des folgenden Algorithmus ist
Ich habe Probleme beim Finden der Zeit Komplexität des folgenden Algorithmus: Mein Problem
void f2(int n) {
int i;
if (n == 1) {
return;
}
for (i = 0; i < n; i++) {
f2(n - 1);
}
}
Die Lösung Ich kam zu O (2^n), aber die richtige Antwort wird als O (n!) Angegeben und ich verstehe nicht, wie das möglich ist und wäre wirklich dankbar, wenn jemand es erklären könnte mich.
warum Tag beide C# und C bis ... es ist sicher nicht beide –
Die erste Rekursion von n auf 0 geht, der erste innere von n - 1 bis 0, der zweite von 2 -2 bis 0 und so weiter. Also ist es 'n * (n - 1) * ... * 2' – HimBromBeere
Wie bist du zu' O (2^n) 'gekommen? Wenn überhaupt, ist jeder Aufruf "O (n)", der "O (n)" aufruft, das "O (n)" aufruft, das "O (n)" ... für ein Netz 'O (pow (n, n)) '- was mit [' n! '] verwandt ist (https://en.wikipedia.org/wiki/Factorial) – chux