How can I avoid infinite while loop?
이전 댓글 표시
N = 1; while (N<11) n = ((N*2)+(N+1))/N; N = n end
I wish to assign the value of 'n' to 'N' and compare if it's less than '11' and again enter the loop until 'N' is equal to 11. Please help.
채택된 답변
추가 답변 (2개)
Daniel
2014년 7월 11일
Set a number equal to the number of times you want to loop (this case I chose 11), subtract each time you're in the loop, and add an and condition
LOOP_LIMIT = 11;
N = 1;
while (N < 11 && LOOP_LIMIT > 0)
n = ((N*2)+(N+1))/N;
N = n;
LOOP_LIMIT = LOOP_LIMIT-1;
end
C.J. Harris
2014년 7월 11일
편집: C.J. Harris
2014년 7월 11일
0 개 추천
You have an infinity loop because your seed (N) is starting at one. Note that your equation ((N*2)+(N+1))/N is in fact equal to 3+(1/N), thereby meaning you'll only get 11 (or greater) for values less than 0.125.
Not sure why you even need a loop, can't you just rearrange, therefore getting n = 1/(11-3) = 0.125.
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


