我一直在考慮下面的算法,即取正整數ķ並返回一個值:階乘算法
X = 1
Y = 1
while X ≠ K do
X = X + 1
Y = Y * x
return Y
我應該弄清楚它返回。
碰巧,我知道答案—返回的ķ —階乘,但我不明白爲什麼。
你怎麼去弄清楚這個僞代碼是做什麼的?
我一直在考慮下面的算法,即取正整數ķ並返回一個值:階乘算法
X = 1
Y = 1
while X ≠ K do
X = X + 1
Y = Y * x
return Y
我應該弄清楚它返回。
碰巧,我知道答案—返回的ķ —階乘,但我不明白爲什麼。
你怎麼去弄清楚這個僞代碼是做什麼的?
現在讓我們假設K是5。因此5的階乘是120 然後,當你進入循環X值是2並且y得到值2.(1 * 2) 然後,進入循環後,X的值爲3,然後由於(3 * 2)而使得Y 6的值。 然後,進入循環後,X的值爲4,然後由於(4 * 6)而使得Y 24的值。 然後,進入循環後,X的值爲5,然後使得Y的值爲120. 然後,由於X == Y,while循環退出並返回Y值,這是階乘。
非常感謝你的幫助! :) –
X = 1 <- this is counter which you gonna multiply in every step
Y = 1 <- this is to store the cumulative product after each step
while X ≠ K do <- until you reach K
X = X + 1 <- increase X
Y = Y * X <- multiply with increased X
return Y <- return the product
因此,在循環累積的產品是這樣的1 -> 1*2 - > 2*3 -> 6*4 -> ... -> 1*2*..*(K-1)*K
這是K!
這一段代碼可以簡單地改寫爲(在C/C++/Java的),
for(X=1;X<=K;X++){
Y=Y*X;
}
現在,它描述了它的自我:-)
你明白使用的所有符號?例如,你知道'X = X + 1'是什麼意思嗎? – ruakh
首先製作一個表格,列出每一輪while循環的值,假設_e.g._ K = 5。 –
@ruakh是的,這個位我明白了,我猜主要位我不明白@ Terje D 。是k位以及它是如何工作的,再次感謝 –