更改伪代码,以便我们摆脱循环
Change a pseudo-code such that we get rid of a loop
我有以下伪代码:
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
我有以下伪代码:
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