Autor Tema: [RETO] calcular factorial  (Leído 21368 veces)

Desconectado good

  • PHPerit@
  • *
  • Mensajes: 49
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[RETO] calcular factorial
« Respuesta #45 en: 12 de Octubre de 2011, 20:53:40 pm »
si quieres hacerlo iterando, haz solo un bucle para guardar los 15 factoriales, y los guardas en un array

factorial[1] = 1, factorial[5] = 120... etc

pero la opción recursiva para mi es más elegante xD

Comunidad PHPeros

Re:[RETO] calcular factorial
« Respuesta #45 en: 12 de Octubre de 2011, 20:53:40 pm »

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[RETO] calcular factorial
« Respuesta #46 en: 24 de Octubre de 2011, 19:50:26 pm »

factorial 
($a){
  if (
$a 1)
   return (
$a factorial ($a-1));
  else
   return 
1;
}

Bucle de 100 veces:
Código: [Seleccionar]
Factorial de 1: 1
Factorial de 2: 2
Factorial de 3: 6
Factorial de 4: 24
Factorial de 5: 120
Factorial de 6: 720
Factorial de 7: 5040
Factorial de 8: 40320
Factorial de 9: 362880
Factorial de 10: 3628800
Factorial de 11: 39916800
Factorial de 12: 479001600
Factorial de 13: 6227020800
Factorial de 14: 87178291200
Factorial de 15: 1307674368000
Factorial de 16: 20922789888000
Factorial de 17: 355687428096000
Factorial de 18: 6402373705730000
Factorial de 19: 1.21645100409E+17
Factorial de 20: 2.43290200818E+18
Factorial de 21: 5.10909421717E+19
Factorial de 22: 1.12400072778E+21
Factorial de 23: 2.58520167389E+22
Factorial de 24: 6.20448401733E+23
Factorial de 25: 1.55112100433E+25
Factorial de 26: 4.03291461127E+26
Factorial de 27: 1.08888694504E+28
Factorial de 28: 3.04888344612E+29
Factorial de 29: 8.84176199374E+30
Factorial de 30: 2.65252859812E+32
Factorial de 31: 8.22283865418E+33
Factorial de 32: 2.63130836934E+35
Factorial de 33: 8.68331761881E+36
Factorial de 34: 2.9523279904E+38
Factorial de 35: 1.03331479664E+40
Factorial de 36: 3.7199332679E+41
Factorial de 37: 1.37637530912E+43
Factorial de 38: 5.23022617467E+44
Factorial de 39: 2.03978820812E+46
Factorial de 40: 8.15915283248E+47
Factorial de 41: 3.34525266132E+49
Factorial de 42: 1.40500611775E+51
Factorial de 43: 6.04152630634E+52
Factorial de 44: 2.65827157479E+54
Factorial de 45: 1.19622220865E+56
Factorial de 46: 5.50262215981E+57
Factorial de 47: 2.58623241511E+59
Factorial de 48: 1.24139155925E+61
Factorial de 49: 6.08281864034E+62
Factorial de 50: 3.04140932017E+64
Factorial de 51: 1.55111875329E+66
Factorial de 52: 8.06581751709E+67
Factorial de 53: 4.27488328406E+69
Factorial de 54: 2.30843697339E+71
Factorial de 55: 1.26964033537E+73
Factorial de 56: 7.10998587805E+74
Factorial de 57: 4.05269195049E+76
Factorial de 58: 2.35056133128E+78
Factorial de 59: 1.38683118546E+80
Factorial de 60: 8.32098711274E+81
Factorial de 61: 5.07580213877E+83
Factorial de 62: 3.14699732604E+85
Factorial de 63: 1.9826083154E+87
Factorial de 64: 1.26886932186E+89
Factorial de 65: 8.24765059208E+90
Factorial de 66: 5.44344939077E+92
Factorial de 67: 3.64711109182E+94
Factorial de 68: 2.48003554244E+96
Factorial de 69: 1.71122452428E+98
Factorial de 70: 1.197857167E+100
Factorial de 71: 8.50478588568E+101
Factorial de 72: 6.12344583769E+103
Factorial de 73: 4.47011546151E+105
Factorial de 74: 3.30788544152E+107
Factorial de 75: 2.48091408114E+109
Factorial de 76: 1.88549470167E+111
Factorial de 77: 1.45183092028E+113
Factorial de 78: 1.13242811782E+115
Factorial de 79: 8.94618213078E+116
Factorial de 80: 7.15694570463E+118
Factorial de 81: 5.79712602075E+120
Factorial de 82: 4.75364333701E+122
Factorial de 83: 3.94552396972E+124
Factorial de 84: 3.31424013457E+126
Factorial de 85: 2.81710411438E+128
Factorial de 86: 2.42270953837E+130
Factorial de 87: 2.10775729838E+132
Factorial de 88: 1.85482642257E+134
Factorial de 89: 1.65079551609E+136
Factorial de 90: 1.48571596448E+138
Factorial de 91: 1.35200152768E+140
Factorial de 92: 1.24384140546E+142
Factorial de 93: 1.15677250708E+144
Factorial de 94: 1.08736615666E+146
Factorial de 95: 1.03299784882E+148
Factorial de 96: 9.91677934871E+149
Factorial de 97: 9.61927596825E+151
Factorial de 98: 9.42689044888E+153
Factorial de 99: 9.33262154439E+155
Factorial de 100: 9.33262154439E+157

Tiempo (s): 0.0419449806213
Memoria (kB): 31.6796875

Es suficiente?

Fuente: http://www.cplusplus.com/doc/tutorial/functions2/ (solo la función)

Saludos
« Última modificación: 24 de Octubre de 2011, 20:07:07 pm por nmartin021 »

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:[RETO] calcular factorial
« Respuesta #47 en: 28 de Octubre de 2011, 01:40:28 am »
Se puede simplificar un poco más:

function factorial($n)
{
	
return (
$n 1) ? ($n factorial($n-1)) : 1;
}
- Moderador de PHP


Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[RETO] calcular factorial
« Respuesta #48 en: 29 de Octubre de 2011, 21:33:17 pm »
Se puede simplificar un poco más:

function factorial($n)
{
	
return (
$n 1) ? ($n factorial($n-1)) : 1;
}

No, no se trata de simplificar. Se trata de hacerlo recursivo y que gaste menos recursos, ya que aunque esté simplificado no gasta más / menos que uno que está simplificado.

Saludos.

Desconectado good

  • PHPerit@
  • *
  • Mensajes: 49
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[RETO] calcular factorial
« Respuesta #49 en: 01 de Noviembre de 2011, 18:13:33 pm »
No, no se trata de simplificar. Se trata de hacerlo recursivo y que gaste menos recursos, ya que aunque esté simplificado no gasta más / menos que uno que está simplificado.

Saludos.

no, nmartin021, no mme vale xD.

optimízalo

Desconectado nmartin021

  • PHPero Avanzado
  • ****
  • Mensajes: 250
  • Karma: 9
    • Ver Perfil
Re:[RETO] calcular factorial
« Respuesta #50 en: 02 de Noviembre de 2011, 01:35:14 am »
no, nmartin021, no mme vale xD.

optimízalo
Me rindo, envíame la solución por MP, por favor. Gracias.

Saludos