我已经获得了以下算法,该算法采用正整数 K 并返回一个值:
X = 1
Y = 1
while X ≠ K do
X = X + 1
Y = Y * x
return Y
我应该弄清楚它的回归。
碰巧,我知道答案 - 它会返回 K 的阶乘 - 但我不明白为什么。
你如何弄清楚这个伪代码的作用?
答案 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;
}
现在它描述了它自己: - )