Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aisak77 en 30 Enero 2017, 09:19 am



Título: Error llamada recursiva Puntero C
Publicado por: aisak77 en 30 Enero 2017, 09:19 am
#include <stdio.h>
#include <stdlib.h>

int f1 (int *A, int n, int i);

int main(){
   
   int n = 4,a = 1;
   int i = 1;
   
   f1(&a,n,i);
   
   printf("LISTO");
   
}

int f1 (int *A, int n, int i)
{
   
   if (i == n)
      return 0;
   else
   {
   return f1(A, n, i++);
   }
}

Me da el siguiente error de compilación [Error] invalid conversion from 'int' to 'int*' [-fpermissive], no entiendo cual puede ser el problema :huh:, gracias.


Título: Re: Error llamada recursiva Puntero C
Publicado por: aisak77 en 30 Enero 2017, 10:49 am
***SOLUCIONADO***

Era debido a que se realizarían infinitas llamadas recursivas puesto que no es correcto asignar los sucesores con un postincremento (i++), se solucionaría simplemente cambiando dicho incremento por (i+1) o (++i).

Un Saludo!.


Título: Re: Error llamada recursiva Puntero C
Publicado por: Kenji-chan en 30 Enero 2017, 13:44 pm
el problema esta en que tu función recibe un puntero
Código:
int f1 (int *A, int n, int i);
con lo cual le tienes que enviar una dirección para que al recibirla el putero apunte a esa dirección
Código:
f1(&a,n,i);
como lo haces aquí pero en esta
Código:
return f1(A, n, i++);
estas tratando de enviar un puntero, en vez de enviar la dirección a la cual apunta tu puntero envíalo de esta forma
Código:
return f1(*(&A), n, i++);