Hola! el problema es que para factorial2 la funcion factorial no esta declarada, es decir tenias que haber puesto antes la funcion factorial. Pero si haces esto va a pasar lo mismo: para factorial no va a estar declarado la funcion factorial2
Para evitar estos inconveniente primero se declaran los prototipos de las funciones:
Código C++:
Ver original#include <iostream>
#include<stdio.h>
/* prototipos de funciones */
int factorial2(int n);
int factorial(int n);
int factorial2(int n) {
if(n<2)
return 1;
else
return n * factorial(n-1);
}
int factorial(int n) {
return n * factorial2(n-1);
}
int main(){
int num=5;
printf("\tEl resultado es: %i\n", factorial
(num
)); //Llama la funcion e imprime resultado return 0;
}
Incluyendo estos prototipos las funciones son visibles entre si. De todos formas la mayoria de la gente suele seguir este orden para hacer un programa:
1º header y defines
2º prototipos de funciones
3º main
4º funciones
Saludos