Productos de dígitos de un número entero

Producto de los dígitos de un número entero. Recibe un número entero, con la función (mod n 10) separa el primer dígito para luego multiplicarlo con el siguiente.
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:

0 comentarios :