Autor
|
Tema: Python - Duda Algoritmo (Leído 5,386 veces)
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
import math def menor(a,b): return a if(a <= b) else b def raiz2(a,b): c = a//b if(math.fabs(b - c) <= 1): return menor(b,c) else: raiz2(a,(b + c)//2) a = 170000 b = raiz2(a,3) print(b)
¿Por qué razón no devuelve el valor que es 412? PD: Depuré hasta que llega al printf y ahí no hallo el error.
|
|
« Última modificación: 28 Marzo 2010, 04:46 am por algorythm »
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
import math def menor(a,b): return a if(a <= b) else b def raiz2(a,b): c = a//b if(math.fabs(b - c) <= 1): return menor(a,b) else: raiz2(a,(b + c)//2) a = 170000 b = raiz2(a,3) print(b)
¿Por qué razón no devuelve el valor que es 412? PD: Depuré hasta que llega al printf y ahí no hallo el error. ¿Qué algoritmo estás usando? Pon el pseudocódigo del mismo, para ver si alguno que use python te ayuda.
|
|
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Raiz2(a) = iter(a,3) donde iter(a,x) = sea c = [a/x] {[] = piso} si |x - c| <= 1 contestar min(x,c) sino iter(a,[(x+c)/2] PD: Modifiqué el menor(a,b) por menor(b,c)
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Aún no entiendo la lógica del algoritmo .. es decir, la finalidad Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Se supone que para calcular una raíz cuadrada.
¿Cómo se llama el algoritmo?
|
|
|
En línea
|
|
|
|
Masita
Desconectado
Mensajes: 120
pythoneando
|
No entiendo muy bien la logica de tu algoritmo.... De todos modos si lo que quieres es hacer una raiz cuadrada, puedes hacerlo con el modulo math.
math.sqrt(a)
|
|
|
En línea
|
En el cielo estan suspendidas las palabras que cantamos en nuestros sueños....
|
|
|
gabymar
Desconectado
Mensajes: 12
|
Hola algorithm, parece que la recursividad te da un pequeño problema, la iteracion que encuentre el resultado devolvera con return el valor de la raiz, pero he ahi el problema, ¿ a quien le devuelve el valor?, pues a la iteracion anterior que es la que le llamo, y esta se queda con el valor, pues no hay un retorno hacia atras de este resultado. una solucion puede ser esta, si te das cuenta la funcion devuelve None o sea nada si no llegamos a la solucion, entonces cuando la solucion se alcance cada iteracion respondera a la anterior con el valor x. modifico, no es necesario comprobar la respuesta de las siguientes iteraciones, puesto que no habra respuesta hasta que el resultado sea el esperado. Saludos : Gaby import math def menor(a,b): return a if(a <= b) else b def raiz2(a,b): c = a//b if(math.fabs(b - c) <= 1): return menor(b,c) else: return raiz2(a,(b + c)//2)
a = 170000 b = raiz2(a,3) print(b)
|
|
« Última modificación: 30 Marzo 2010, 09:20 am por gabymar »
|
En línea
|
|
|
|
h0oke
Desconectado
Mensajes: 2.059
Coder ~
|
Muchas gracias gabymar, excelente respuesta...
Con respecto a las dudas anteriores, es simplemente un algoritmo para encontrar la raíz cuadrada de un número por método de bisección utilizando únicamente operaciones de alu.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda Algoritmo de Ordenamiento
Programación General
|
kernel19
|
4
|
3,700
|
27 Diciembre 2010, 16:54 pm
por BgCRaCK
|
|
|
Duda sobre algoritmo AES SERPENT TWOFISH
Criptografía
|
CH1N1
|
1
|
9,977
|
12 Diciembre 2010, 18:54 pm
por APOKLIPTICO
|
|
|
duda con algoritmo
Programación General
|
z_ane_666
|
1
|
2,987
|
5 Mayo 2011, 23:40 pm
por Valkyr
|
|
|
Duda algoritmo ajedrez en c++
Programación C/C++
|
oliverm
|
5
|
17,739
|
21 Julio 2013, 00:09 am
por eferion
|
|
|
Algoritmo Genetico Python
Scripting
|
Camilo2001
|
0
|
4,986
|
12 Marzo 2017, 04:21 am
por Camilo2001
|
|