How can I break this while loop and store the data?

1 view (last 30 days)
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!!

Accepted Answer

Alex Mcaulley
Alex Mcaulley on 31 Jul 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

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!