2013-07-20 492 views
0

我一直在考慮下面的算法,即取正整數ķ並返回一個值:階乘算法

X = 1 
Y = 1 
while X ≠ K do 
    X = X + 1 
    Y = Y * x 
return Y 

我應該弄清楚它返回。

碰巧,我知道答案—返回的ķ —階乘,但我不明白爲什麼。

你怎麼去弄清楚這個僞代碼是做什麼的?

+0

你明白使用的所有符號?例如,你知道'X = X + 1'是什麼意思嗎? – ruakh

+0

首先製作一個表格,列出每一輪while循環的值,假設_e.g._ K = 5。 –

+0

@ruakh是的,這個位我明白了,我猜主要位我不明白@ Terje D 。是k位以及它是如何工作的,再次感謝 –

回答

0

現在讓我們假設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值,這是階乘。

+0

非常感謝你的幫助! :) –

1
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!

0

這一段代碼可以簡單地改寫爲(在C/C++/Java的),

for(X=1;X<=K;X++){ 
    Y=Y*X; 
} 

現在,它描述了它的自我:-)