伪码中的因子算法

时间:2013-07-20 16:35:30

标签: algorithm math factorial

我已经获得了以下算法,该算法采用正整数 K 并返回一个值:

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

我应该弄清楚它的回归。

碰巧,我知道答案 - 它会返回 K 的阶乘 - 但我不明白为什么。

你如何弄清楚这个伪代码的作用?

3 个答案:

答案 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 <{1}} K!

答案 1 :(得分:0)

现在让我们假设K是5.因此,5的阶乘是120。 然后,当您输入循环时,X值为2,y得到值2.(1 * 2) 然后在进入循环后X的值为3,然后得到Y 6的值,因为(3 * 2)。 然后在进入循环后X的值为4,然后得到Y 24的值,因为(4 * 6)。 然后在进入循环后X的值为5,然后得到Y 120的值。 然后,由于X == Y,while循环退出,返回Y factor,即factorial。

答案 2 :(得分:0)

这段代码可以简单地重写为(在C / C ++ / Java中),

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

现在它描述了它自己: - )