How can I break this while loop and store the data?
    조회 수: 5 (최근 30일)
  
       이전 댓글 표시
    
    Alicia Cuber Caballero
 2019년 7월 31일
  
    
    
    
    
    댓글: Alicia Cuber Caballero
 2019년 7월 31일
            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
채택된 답변
  Alex Mcaulley
      
 2019년 7월 31일
        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
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

