Conv{1} = 0; %instead of Conv = 0;
while Conv{end} == 0
and use
Conv{run_number} = Conv{R_2{run_number}}; %instead of Conv()
However, please examine this statement more carefully:
Conv{run_number} = Conv{R_2{run_number}};
On the first iteration, Conv{1} is the only thing that exists, so if R_2{1} is not exactly 1 then you would be accessing out of bounds. So R_2{1} must be 1, and you are then setting Conv{1} = Conv{1} and that was initialized to 0. Second iteration, Conv{1} is still the only thing that exists, so R_2{2} must be 1, and you are setting Conv{2} = Conv{1} which is 0. Third iteration, the existing Conv{1}=0 and Conv{2}=0 are what exists, so Conv{3}=0. By induction, you are going to continue the loop with 0's until you run out of memory.