Error llamada recursiva Puntero C

Iniciado por aisak77, 30 Enero 2017, 09:19 AM

0 Miembros y 1 Visitante están viendo este tema.

aisak77

#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.

aisak77

***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!.

Kenji-chan

el problema esta en que tu función recibe un puntero
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 f1(&a,n,i); como lo haces aquí pero en esta 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 return f1(*(&A), n, i++);