How can I solve this odd/even loop question (hailstone sequence)?
    10 views (last 30 days)
  
       Show older comments
    
    mrs_matlab_rookie_thanks
 on 22 Sep 2015
  
    
    
    
    
    Edited: Walter Roberson
      
      
 on 22 Sep 2015
            n = 71
If n is even, divide it by 2 to get n / 2.
If n is odd, multiply it by 3 and add 1 to obtain 3n + 1. 
Repeat process until n = 1.
I need to find out how many steps it takes to reach 1..
thanks!
2 Comments
Accepted Answer
  Varun Pai
      
 on 22 Sep 2015
        I think this is your requiremnt. Please check
num = 71;
count = 0;
while(num~=1)
  count = count+1;
  if(mod(num,2)==0)
      num = num/2;
  else
      num = 3*num + 1;
  end
end
fprintf('count = %d', count);
0 Comments
More Answers (1)
  Thorsten
      
      
 on 22 Sep 2015
        First you can skip the 1, and just write n(ii).
Next you have forgotten to assign the new value, and you have to move the increment of ii outside the else-clause
        if mod(n(ii),2)==1
          n(ii+1) = 3*n(ii)+1;
        else 
          n(ii+1) = n(ii)/2;
        end
        ii=ii+1;
Finally you have to change the while loop condition; while n(ii) == 1 means that the loops only continues if the n is 1, but it should continue if n is NOT 1.
See Also
Categories
				Find more on Resizing and Reshaping Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

