Q) Consider the following program fragment:
var x,y:integer; x:=1; y:=0; while y < x do begin x:=2∗x; y:=y+1; end;
For the above fragment , which of the following is a loop-invariant ?
E) None of the above, since the loop does not terminate
Since, Loop-Invariant is something which is true before and after each iteration of a loop. So, according to the definition, I am getting answer as (D) but I have a doubt whether termination of that loop is necessary or not for the given code. One of the properties of algorithm says :- algorithm should always terminate after finite no. of steps. So, if the question is about Pseudocode then I will definitely mark answer as (D) but since it is program fragment, So I am confused between options (D) and (E).
So, My Doubt is definition of loop-invariant is also true for the loop in the code which is written in any language like C,C++ etc.