format compact
x(1)=1; x(2)=1;
x(3)=x(2)+x(1);
i=3;
max=input('max= ');
while x(i)<=max
x(i+1)=x(i)+x(i-1);
i=i+1;
end
disp(x(1,:))
제가 피보나치 수열을 위와 같이 짰는데요, max는 한계숫자 이하를 보이려고 한거고..
여튼 이대로 실행하면, max 값을 기준으로 1라운드 더 돕니다..
원인은 알겠는데 해결할 방법을 도저히 모르겠네요..
i가 1씩 증가하는 구문을 먼저 넣으면 에러가 나더군요... orz..
결과 출력의 경우 max 값이 100 일시
[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
요렇게 나오는데, 제가 보고 싶은 결과는
[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
요겁니다.. 도저히 답을 모르겠어서 여기 질문해봅니다..
ps. 처음에 for문으로 했었는데 계속 에러가 나서 while로 바꿨습니다만..
두가지 경우 모두 가능할 수 있나요..
format compact
x(1)=1; x(2)=1;
x(3)=x(2)+x(1);
i=3;
max=input('max= ');
while x(i)<=max
x(i+1)=x(i)+x(i-1);
i=i+1;
end
disp(x(1,1:i-1))
While문의 종료조건이 x(i+1)번까지 연산이 되어야해서 한개의 데이터가 더 생성됩니다.
어렵네요