Помощ за една JavaScript задачка


0

Здравейте!

Съвсем начинаещ съм в JavaScript-a и реших, преди да започнат курсовете, лека-полека да се запозная с материята.

Попаднах на следната задачка за изчисляване на факториел с for цикъл, която малко ме затруднява.

Screenshot

http://pastebin.com/bf6Uk3jf

Да кажем, че prompt числото ще е 5.

Според конструкцията c = c + 1, при всяко повторение, към стойността на променливата c се добавя единица:
1: c = 2
2: c = 3
3: c = 4
4: c = 5

Съответно, променливата output всеки път се умножава по съответната стойност на c:
1: 1 * 2 = 2
2: 1 * 3 = 3
3: 1 * 4 = 4
4: 1 * 5 = 5

Въпросът ми е: как става така, че при командата textContent, output представлява произведението на 2 * 3 * 4 * 5? Т.е., къде в задачата е указано, че стойностите на output, които са получени при всяко повторение, накрая трябва да се умножават помежду си?
И второ, защо output = 1 се пише в counter-a след запетайката?
 




Отговори



3

Здравей,

забалежи, че на output се присвоява старата й стойност умножена по c (output = output * c), т.е. ще имаш:

1: 1 * 2 = 2
2: 1 * 3 = 3
3: 1 * 4 = 4
4: 1 * 5 = 5

За numInput = 6;

1: output = 1, c = 2; => output = output * c = 1 * 2 = 2;

2: output = 2, c = 3; => output = output * c = 2 * 3 = 6;

3: output = 6, c = 4; => output = output * c = 6 * 4 = 24;

4: output = 24, c = 5; => output = output * c = 24 * 5 = 120;

5: output = 120, c = 6; => output = output * c = 1 * 2 = 720;

... докато c < numInput

 

Променливите, които се дефинират в "counter-a" или в контрукцията на цикъла for обикновено са за локално предназначение, т.е. да се ползват само в рамките на тялото на цикъла (извън него не съществуват).  JS обаче позволява да се дефинира в конструкцията и да се ползва извън нея. В този случай променливата output е по-подходящо да бъде дефинира извън конструкцията, примерно при var c, output = 1;

Според мен този код е малко по-ясен: http://pastebin.com/6PCvzTSa


от martin.nikolov (4535 точки)


0
Благодарности!