我有以下伪代码:
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
循环功能,但我看不到如何仅通过一个循环就能获得相同的行为。
(请原谅可怕的伪代码样式]
如果您在谈论的是
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