循环没有做到预期的

时间:2015-01-18 10:29:14

标签: objective-c loops

我正在学习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)它创建一个无限循环

请告诉我,该代码有什么问题以及如何修复它。谢谢!

1 个答案:

答案 0 :(得分:1)

而不是在for循环中执行while循环,使用if检查数字是否可以被5整除。

如果您想使用do while循环执行此操作,则可以执行以下操作:

int i = 5;
int triangularNumber;
do {
    triangularNumber = i * (i+1)/2;
    NSLog(@"Trianglular number is %i", triangularNumber);
    i += 5;
} while (i < 51);

您的代码无效的原因:

  • 在你的do while循环中,如果我说是5,那么你将最终以无限循环运行,因为你将满足你的do while循环条件i%5==0
  • 你只需要5,10,15这样的数字......所以它只是一个循环的问题。现在循环从1到50开始,你是挑剔的,因为你只需要一个5的元素,因此如果条件说明打印你可以使用,当且仅当我的i是5的倍数时。
  • while while会一直进入循环并执行一次。因此,对于1,它将输入并对triangleNumber进行计算,因为1 * 2/2 = 1因此您的输出1和检查条件后打印是1可被5整除,然后它出来并将i递增到2并遵循相同的例程上方。