How can I break this while loop and store the data?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Alicia Cuber Caballero
el 31 de Jul. de 2019
Comentada: Alicia Cuber Caballero
el 31 de Jul. de 2019
Hi! I'm trying to generate a collatz sequence for any n and to stop when n == 1. I used the following:
n=7
while n>1
if mod(n, 2)==0
n = n/2
end
if mod(n,2)~=0
n = (3.*n)+1
end
end
I thought it would stop generating when n reached 1, given the conditions for the while loop, but it just doesn't. As a result, it keeps running forever and matlab can't handle it and the site closes. I tried adding
if n==1
break
end
right after "while n>1" but it doesn't work either. I also want to store the sequence generated (which will vary in size depending on the value of n) and I don't know how to.
Thanks in advance!!
0 comentarios
Respuesta aceptada
Alex Mcaulley
el 31 de Jul. de 2019
Try with this:
n = 7;
iter = 1;
seq(1) = n; %where the sequence is stored
while n > 1
if mod(n, 2)==0
n = n/2;
elseif mod(n,2)~=0
n = (3.*n) + 1;
end
iter = iter + 1;
seq(iter) = n;
end
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!