Código fuente
prod::Int->Int
prod 0=1
prod n=(mod n 10)*prod(div n 10)
prod::Int->Int
Esta función de nombre prod recibe un numero entero y dá como resultado un número también entero.
prod 0=1
Esta linea es el caso básico de la función prod cuando, es decir cuando la variable n asuma el valor de 0, dará como resultado 1.
prod n=(mod n 10)*prod(div n 10)
Este es el caso recursivo donde mod n 10 nos devuelve el último dígito del número n, a este numero multiplica por la misma función prod con el valor div n 10.
Ejemplo:
Si n=423
Prod 423=(mod 423 10) * prod (div 423 10)
Donde mod 423 10 = 3 ; ya que el residuo de la división de 123 entre 10 es 3.
div 423 10=12; la división de 123 entre 10 es 12, y como es una división entera no se toman en cuenta los decimales.
Entonces tendremos:
Prod 423= 3 * prod 42
Ahora el programa resolverá
Prod 42= (mod 12 10) * prod (div 12 10) que será igual a: prod 42 =2 * prod 4
luego:
prod 4=(mod 4 10) * prod (div 4 10) dará como resultado : prod 4= 4 * prod 0.
Y como el caso básico de nuestra función es que cuando la variable n sea 0 devuelve 1
Entonces tendremos:
Prod 0=1
Con esto finalizará el proceso recursivo.
Prod 423=3 * prod 42
Prod 42=2 * prod 4
Prod 4 = 4* prod 0
Prod 0 = 1
Finalmente:
Prod 423 = 3 * 2 * 4 * 1 = 24
Artículos relacionados: