Display a message only one time in a recursion containing a for loop
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
giannit
el 5 de Abr. de 2018
Comentada: Walter Roberson
el 6 de Abr. de 2018
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
0 comentarios
Respuesta aceptada
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
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.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!