Pessoal
Pouco entendo de analise de algoritmos, mas recentemente foi me informado que essa primeira função recursiva seria melhor em relacao a segunda. Mas, para provar isso, o autor utilizou o debug na IDE Eclipse, mostrando as chamadas sendo empilhadas na stack. No entanto, ao desempilhar, visualmente a primeira desempilha mais rapido, ao contrario da segunda. Com isso, o autor justificou que gastaria menos ciclos do processador para desempilhar, enquanto a segunda funçao gastaria mais.
void foo1(int n)
{
if (n >= 0) {
printf("%d\n", n);
foo1(n-1);
}
}
void foo2(int n)
{
if (n >= 0) {
foo2(n-1);
printf("%d\n", n);
}
}
Quero saber o que voces acham disso, caso ele esteja certo, teria alguma fonte disso ou alguma outra prova empirica ?
obs: Nao estamos levando em consideracao a ordem dos resultados, nem o 'big O', pois acho que os dois sao O(n)