2013-10-18 3 views
0

"300"을 초과하는 "a"에 대한 매개 변수 "n"의 값을 결정하기로되어있는 while 루프를 Matlab에 작성했습니다. "n"은 17이어야하지만 나는 대신 4의 값을 얻는다. 누구든지 문제가 보이나요? 다음과 같이while 루프에 중첩 된 루프에 대해

코드는 다음과 같습니다

a = 10; 
k = 0.5; 
n = 2; 
while a < 300 
    for m = 1:5 
     a = a + (a*k) + n; 
    end 
    n = n + 1; 
end 

편집 : 나는, Barmar의 의견 덕분에 내 "에"변수를 초기화하지 않았다는 것을 깨달았다 . 코드가 매우 효율적으로 보이지는 않지만 다음과 같이 작동합니다.

a = 10; 
k = 0.5; 
n = 2; 
while a < 300 
    a = 10; 
    for m = 1:5 
     a = a + (a*k) + n; 
    end 
    if a >= 300 
     break 
    end 
    n = n + 1; 
end 
+1

'n'의 다른 값을 시도 할 때'a'를 재 초기화 할 필요가 없습니까? – Barmar

+0

아마도이 수식이 자신이 생각하는 것을하지 않는 것일 수 있습니다. 'a '에 1.5를 곱하고 2를 더합니다. 5 번하고'n '을 3으로 늘립니다. 그 시점에서'a'는 이미 100보다 큽니다.'n'이 만들 것이라고 생각하지 않습니다. 그것은 17 시까 지입니다. – paddy

+0

Barmar에게 감사드립니다. 내 코드를 수정하는 방법을 알아 냈어. –

답변

0

수식이 올바른 경우 예상되는 답은 4 개입니다. A는 지금> 300하지만 우리가 가지고

151, 229, 346, 522, 786 

주의 사항 : 다음 실행이로 변 후 3 n을 전환

17, 27, 42, 65, 99 

: 루프 실행에 대한 첫 번째는 respsective 값으로 변 n을 한 번 더 늘리십시오. 그러므로 n = 4입니다.