Display a message only one time in a recursion containing a for loop

5 visualizaciones (últimos 30 días)
Consider this simple code
a=[1 1 0 1];
recursion(a)
with
function a=recursion(a)
if isempty(a)
disp('a does not contain 0')
else
for i=1:numel(a)
if a(1)==0
disp('a contains 0')
return
end
a=a(2:end);
recursion(a);
end
end
end
Don't focus on the aim of the code (of course the job could be done in 1 line or 2) but on the output
a contains 0
a contains 0
a contains 0
a contains 0
ans =
0 1
Is it possibile to output the message "a contains 0" only one time AND then to output the modified vector "a" ? i.e. is it possibile to have this output
a contains 0
ans =
0 1

Respuesta aceptada

Walter Roberson
Walter Roberson el 6 de Abr. de 2018
Do not have recursion return a, since the changed value is not used. Instead, have it return a status as to whether it encountered a 0. Check the output and if set then break out the the loop and return 1. Only return 0 if you get to the end of the loop without a 0.
  6 comentarios
giannit
giannit el 6 de Abr. de 2018
Ok many thanks, why you put another if after the recursion call? Moreover, should I also change "return" with "break" in the first if ?
Walter Roberson
Walter Roberson el 6 de Abr. de 2018
The "break" could be changed to return. The idea is that as soon as you see it found you do not need to examine the rest of a in the for loop.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by