Autor
|
Tema: C++ o Python, cual de los dos se equivoca!? (Leído 3,147 veces)
|
TheMaker
Desconectado
Mensajes: 514
|
Tengo dos códigos, q hacen lo mismo (o es creo) el de c++ #include<iostream> using namespace std; int re(int nu){ if(nu==0) return 0; if(nu==1) return 1; return 3*re(nu-1)+4*re(nu-2); } int main(){ cout<<re(1); }
y el de python def r(n): if n==0: return 0 if n==1: return 1 return 3*r(n-1)+4*r(n-2)
hasta r(16) dan los mismos resultados, pero a partir de ahí cada uno dice una cosa distinta, además c++ peta en cuanto se sube de r(20) mientras que python... llega a valores superiores a r(900) :O (copón bendito) pues bien, usando el máxima (una copia libre del mathematica) he comprobado que python es el que lleva razón, alguien sabe porque c++, un leguaje que se supone supereficiente en comparación con un leguaje como python, se equivoca(para valores altos) en cálculos matemáticos que python resuelve sin despeinarse???
|
|
|
En línea
|
Gibe money please or I report you
|
|
|
do-while
Desconectado
Mensajes: 1.276
¿Habra que sacarla de paseo?
|
¡Buenas!
Eso que describes me suena al rango de valores que puede tomar una variable de tipo int. Imprimitete por pantalla sizeof(int), lo multiplicas por 8 y eleva 2 al resultado que de en la calculadora. Luego dividelo por 2 y ese sera el entero mas grande que puedas utilizar en c++.
Por ejemplo, si sizeof(int) = 4 -> 8 * 4 = 32 -> 2^32 = 4.294,967.296 (Este sera el unsigned int mas alto que podras utilizar (realmente le tienes que restar uno)) y 4.294,967.296 / 2 - 1 = 2.147,483.647 Es el int mas alto que puedes utilizar.
Por lo que dices, la forma en la que python maneja enteros es distinta. Puede utilizar enteros arbitrariamente grandes.
En C++ esto lo puedes simular tu con una clase que maneje enteros todo lo grandes que quieras, por ejemplo, utilizando vectores de enteros. Luego, evidenemente, tendra que formatear la entrada y la salida, sobrecargar operadores...
¡Saludos!
PD: en limits.h, te salen los limites de los tipos enteros.
|
|
« Última modificación: 3 Noviembre 2010, 01:15 am por do-while »
|
En línea
|
- Doctor, confundo los números y los colores. - Vaya marrón. - ¿Marrón? ¡Por el culo te la hinco!
|
|
|
|
EvilGoblin
Desconectado
Mensajes: 2.323
YO NO LA VOTE!
|
los 2 (c++ y python) son muy eficientes mientras los sepas usar =).
Python es una fuente de programacion rapida para tareas sencillas y a medida que la complicas se hace poco menos legible y mas desordenado.
Encambio C++ no cambia su dificultad desde el "Hola Mundo" hasta hookeos y mutex xD..
tenes que usar double int
|
|
|
En línea
|
Experimental Serial Lain [Linux User]
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
tenes que usar double int
double int? C tiene los siguientes tipos fundamentales:
* Caracteres: char (también es un entero), wchar_t * Enteros: short int, int, long int, long long int * Números en coma flotante: float, double, long double * Vacío: void
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
EvilGoblin
Desconectado
Mensajes: 2.323
YO NO LA VOTE!
|
xD cierto long int lo siento xD
|
|
|
En línea
|
Experimental Serial Lain [Linux User]
|
|
|
|
|