Sto avendo difficoltà a capire il motivo per cuiricorsivo Fibonacci
#include <iostream>
using namespace std;
int fib(int x) {
if (x == 1) {
return 1;
} else {
return fib(x-1)+fib(x-2);
}
}
int main() {
cout << fib(5) << endl;
}
risultati in un errore di segmentazione. Una volta che x scende a 1 non dovrebbe eventualmente tornare?
La complessità temporale di questo algoritmo è O (2^n). È molto cattivo. Per esempio, il calcolo di f (30) richiede circa 1 miliardo di operazioni. Usa la programmazione dinamica nel tuo caso. –
@Alexey, sono sicuro che l'OP vuole solo imparare. Se le prestazioni sono un problema, la meta-programmazione è davvero la strada da percorrere. – LiraNuna
@Alexey Malistov: No, usa invece l'approccio iterativo. – Gumbo