【发布时间】:2015-03-16 12:24:51
【问题描述】:
我正在研究 Obj-C,现在我不明白为什么我的循环不能正常工作。我知道一种方法可以通过单个while 循环来实现结果,但我想通过do while 来做到这一点并且无法弄清楚出了什么问题。
我想要的是,为整数 5、10、15 显示名为 triangularNumber 的整数,依此类推。这是我尝试过的:
for (int i=1; i<51; i++){
int triangularNumber;
do {
triangularNumber = i * (i+1)/2;
NSLog(@"Trianglular number is %i", triangularNumber);
}
while (i%5 == 0);
}
它会产生奇怪的结果: 1) 不满足 i%5==0 的条件,它输出 1,3,6,10 然后无限个 15 2) 它创建了一个无限循环
请告诉我,该代码有什么问题以及如何修复它。谢谢!
【问题讨论】:
-
您不会更改
i块中的do。要么永远不会循环,要么永远循环。 -
@Mat,如何解决?
-
好吧,你修正了逻辑。为什么你有那个 do/while 循环呢?什么时候应该循环?
-
@Mat,它假设只在 i 为 5、10、15 等时进行计算。这就是为什么我检查 while (i%5 == 0)。
-
但这没有意义。如果
i%5==0在第一次检查while 条件时为真,那么您知道do块将被重新执行,对吧?如果发生这种情况,在第二次执行结束时,i%5==0仍然为真,因为您没有更改i。所以 do 块将再次运行。然后再次。再一次……do/while是一个循环结构。您不需要循环构造。所以不要使用一个。
标签: objective-c loops