更改伪代码,使我们摆脱循环

问题描述 投票:0回答:1

我有以下伪代码:

read n
p <- 1;
m <- 0;
k <- 0;
while ( n != 0 )
    read x
    for ( i <- 1, k )
        x <- [x / 10]

    if ( x != 0 )
        c <- x % 10
    else
        c <- n % 10

    m <- c * p + m
    n <- [n / 10]
    p <- p * 10
    k <- k + 1
write m

并且我必须转换此代码,以使我们只有1个循环。我一遍又一遍地浏览示例,但我不知道该怎么做。我认为我们需要第一个while循环,因此我一直试图摆脱该for循环功能,但我看不到如何仅通过一个循环就能获得相同的行为。

(请原谅可怕的伪代码样式]

algorithm pseudocode
1个回答
2
投票

如果您在谈论的是

for ( i <- 1, k )
    x <- [x / 10]

循环,将x除以​​10 ** k,然后

x <- [x / 10**k]

完全完成循环的工作。如果您觉得提升权力是一个变相的循环,请考虑

power_of_ten = 1
while ( n != 0 )
    read x
    x <- [x / power_of_ten]
    ....
    power_of_ten <- power_of_ten * 10
© www.soinside.com 2019 - 2024. All rights reserved.