Bueno, por ahora no toy seguro si es la mejor forma de hacerlo, sigo trbajando en ello, se que hay otras formas, pero no logro hacerlo aún ya que tengo unos pequeños problemas con sequences y mutable types.
F#
EDIT:
PD: Se que la idea es hacerlo en C++, pero es que no tengo más nada que hacer![:) :)](https://forum.elhacker.net/Smileys/navidad/smiley.gif)
EDIT 2:
Coloco 2 formas más de hacerlo siguiendo el mismo algoritmo, solo lo hago para aprender F# más nada.
Nota: ghastlyX, estoy pensando en lo que me dijiste, un saludo!
F#
Código (ocaml) [Seleccionar]
open System
//forma 1 dos ciclos no usa funcion externa
let r i j=
let mutable t = 0
for i in i .. j do
let mutable n = i
let mutable x = 2
while n <> 1 do
if n % 2 = 1 then n <- 3*n+1 else n <-n/2
if x > t then t <- x
x <- x + 1
t
//funcion para la forma 2 y 3
let rec gcd n y =
if n = 1 then y
else match n % 2 with
| 1 -> gcd (3*n+1) y + 1
| _ -> gcd ( n/2) y + 1
//forma 2
let r2 i j =
let mutable m = 0
let mutable o = 0
for i in i .. j do
o <- gcd i 1
if o > m then m <- o
m
//forma 3
let rec r3 i j n=
if i = j then n
else let e = gcd i 1
r3 (i+1) j (match e > n with |true -> e |_ -> n)
let a = Console.ReadLine() |> int
let b = Console.ReadLine() |> int
printfn "r %A" (r a b)
printfn "r2 %A" (r2 a b)
printfn "r3 %A" (r3 a b 1)
Console.ReadKey(true);
EDIT:
PD: Se que la idea es hacerlo en C++, pero es que no tengo más nada que hacer
![:) :)](https://forum.elhacker.net/Smileys/navidad/smiley.gif)
EDIT 2:
Coloco 2 formas más de hacerlo siguiendo el mismo algoritmo, solo lo hago para aprender F# más nada.
Nota: ghastlyX, estoy pensando en lo que me dijiste, un saludo!