## Index exceeds the number of array elements in while loop

Asked by Kaan Uçar

### Kaan Uçar (view profile)

on 25 Mar 2019
Latest activity Commented on by Kaan Uçar

### Kaan Uçar (view profile)

on 13 Apr 2019
Accepted Answer by Raghunandan V

### Raghunandan V (view profile)

I ve been trying to create a Fibonacci Sequence in which ratio of the adjacent values converge to 0.001. Here is the code I've written so far:
clc
clear
x = input('Please enter the first number in the series:');
y = input('Please enter the second number in the series:');
s(1) = x;
s(2) = y;
k = 3;
while abs(s(k)./s(k-1) - s(k-1)./s(k-2))>0.001
s(k) = s(k-1) + s(k-2)
k = k+1;
end
disp(s)
But when I run the code, it says; Index exceeds the number of array elements (2)
Error is on the eighth line.

Kevin Phung

### Kevin Phung (view profile)

on 25 Mar 2019
there is an error because you have not defined what s(3) is.
Kaan Uçar

### Kaan Uçar (view profile)

on 25 Mar 2019
I defined s(3) as x + y and and still get the error. This time in parantheses it says 3 instead of 2.
Kevin Phung

### Kevin Phung (view profile)

on 25 Mar 2019
ok, and where is that in your code? What is see is that you've set s(1) and s(2) to be the user input.
Youve made k a constant 3, and your while loop CONDITION:
while abs(s(k)./s(k-1) - s(k-1)./s(k-2))>0.001
starts with s(k) which is s(3), and that does not exist.

### Release

R2018b

Answer by Raghunandan V

### Raghunandan V (view profile)

on 26 Mar 2019

Hi,
I just shuffled the code a bit. Check this:
clc
clear
x = input('Please enter the first number in the series:');
y = input('Please enter the second number in the series:');
s(1) = x;
s(2) = y;
k = 3;
Cond =1; % intialize the condition
while Cond > 0.001
s(k) = s(k-1) + s(k-2);
Cond = abs(s(k)/s(k-1) - s(k-1)/s(k-2));
k = k+1;
end
disp(s)

Kaan Uçar

### Kaan Uçar (view profile)

on 13 Apr 2019
Sorry for the late response. I got the problem fixed. Thank you for your helps.