Stop for loop if F <= 0

3 visualizzazioni (ultimi 30 giorni)
Malcolm Taylor Hansen
Malcolm Taylor Hansen il 7 Ott 2015
Risposto: Walter Roberson il 7 Ott 2015
I wonder how it is possible to stop a for loop without using break. I have tried to expand the code with a while loop, but I do not manage to get it to work. Appreciate hints.
n = 20;
terskelverdi = 0.1;
F = zeros(1,n);
F(1) = 1;
F(2) = 1;
for k = 3:n
r = rand(1);
if r > terskelverdi
F(k) = F(k-1) + F(k-2);
else
F(k) = F(k-1) - F(k-2);
end
end
disp(F)
figure, plot(F,'g-'), grid
title('Fibonaccitall med tilfeldigheter opp til "n"')
  1 Commento
Mohammad Abouali
Mohammad Abouali il 7 Ott 2015
just curious, Why you don't want to use break?

Accedi per commentare.

Risposta accettata

Walter Roberson
Walter Roberson il 7 Ott 2015
To stop a "for" loop without using "break", you can do one of:
  • reach the natural end of iterations for the loop
  • "return" to a calling routine
  • "error" out to an enclosing try/catch (or the command line)
  • quit or exit MATLAB

Più risposte (1)

Jon
Jon il 7 Ott 2015
Modificato: Jon il 7 Ott 2015
Why are you opposed to using break? If you mean that you want to redraw a random number if F <=0, you could do something like this:
count = 3;
while 1
r = rand(1);
if r > terskelverdi
F(count) = F(count-1) + F(count-2);
else
F(count) = F(count-1) - F(count-2);
end
if F(k) > 0
count = count + 1;
end
if count == n
break
end
end
but this could cause an infinite loop. Not sure what your objective is, so I can't help more.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by