为什么这个想法在使用while循环。这是微不足道的吗?

时间:2017-07-28 15:41:43

标签: while-loop

我最近在阅读其他人的剧本时遇到了很多。下面是一个简短的例子: 假设我们需要输入并将它们存储在var A和B中,方案如下:

int ok;
ok = false;
while(!ok){ 
//ask input for A
//ask input for B
ok = true;
}

我明白它想要什么,但为什么这个方案是必要的?我可以只“询问输入A和B”。

2 个答案:

答案 0 :(得分:2)

  

但为什么这个方案是必要的?

没有必要。

  

我是否只能“询问A和B的输入”。

你确定可以。

但是,如果用户为您提供的输入无效(例如:您要求用户年龄,并且他们输入“马”),那么您可能想再次询问。允许重新输入输入通常是一个有用的功能。重复一段程序的规范控制结构是一个循环。

然而,您的示例程序无条件地设置> library(Matrix) > library(expm) > A = matrix(3,2,2) > B = Matrix(A,sparse=TRUE) > > # changed lapply to rep list > `%^^%` = function(x, k) Reduce(`%*%`, rep(list(x), k)) > # per Roland for loop approach will be better on memory > `%^^%` = function(x, k) {for (i in 1:(k - 1)) x <- x %*% x; x} > > as.matrix(B%^^%2) [,1] [,2] [1,] 18 18 [2,] 18 18 > A%^%2 [,1] [,2] [1,] 18 18 [2,] 18 18 ,因此在这种情况下,循环实际上没有用处。只有在输入正常之前必须传递某种形式的验证时,循环才有意义。

答案 1 :(得分:1)

如果您省略的代码中没有检查,但是您在整个地方都看到了相同的构造,那么它就是一个复制和粘贴工件。

有人有一段代码正在读取输入并验证它,然后将代码复制到其他地方,删除了验证位,剩下的就是原样。然后他们将这些代码复制并粘贴到所有地方。

根据我的经验,这种情况经常发生。