Foros del Web » Programando para Internet » Python »

Funcion simple me retorna None

Estas en el tema de Funcion simple me retorna None en el foro de Python en Foros del Web. Hola a todos, tengo este problema. Tengo que hacer un programa con una recursión que valla creando una lista desde un numero A a uno ...
  #1 (permalink)  
Antiguo 23/03/2016, 05:16
 
Fecha de Ingreso: julio-2009
Mensajes: 5
Antigüedad: 15 años, 5 meses
Puntos: 0
Pregunta Funcion simple me retorna None

Hola a todos, tengo este problema. Tengo que hacer un programa con una recursión que valla creando una lista desde un numero A a uno B y luego la retorne.
Lo hago con el código que está en el screen y devuelve un None, pruebo antes la variable C con un print y en teoría tiene la lista completa.



Muchas gracias desde ya.

Sigo probando y me doy cuanta que no es la lista, sino que directamente no me retorna ni probando con un 1

  #2 (permalink)  
Antiguo 23/03/2016, 08:14
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Funcion simple me retorna None

La próxima vez, por favor no uses imágenes.

Hay dos problemas en tu código original, el primero y menor es que return no es una función, con lo cual la línea 5 debería ser
Código Python:
Ver original
  1. return c
y no
Código Python:
Ver original
  1. return(c)

El segundo, y la causa de tu problema, es que no estás propagando el valor que devuelve tu función recursiva. Veámoslo con el ejemplo más simple posible: funcionNoIter(1, 2)

1º llamada: a < b, se invoca funcionNoIter(2, 2)
2º llamada: a == b, se devuelve 1

El problema es que ese 1 devuelto por la segunda llamada a funcionNoIter no es a su vez devuelto por la primera, con lo cual no llega a la llamada original. Es como si escribieras
Código Python:
Ver original
  1. elif a < b:
  2.     1
cuando lo que deberías escribir es
Código Python:
Ver original
  1. elif a < b:
  2.     return 1
La solución al problema es escribirlo como
Código Python:
Ver original
  1. elif a < b:
  2.     return funcionNoIter(a+1, b, c)
En Python, las funciones que no tienen un valor de retorno devuelven None.


Saludos.

Etiquetas: listas, print, recursion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.