for循环中条件(condition)为空的含义和用法 int i = 0 i++(扔鸡蛋算法)

以Java为例,有时候在代码中我们会看到如下类型的for循环代码

public int forLoop(int n){
    
    
	for (int i = 1; ; i++) {
    
    
		ans += (long) i;
	    if (ans >= (long)n) {
    
    
	    	return i;
	    }
	 }
}

首先看一下java for循环的基本概念:

for (statement 1; statement 2; statement 3) {
  // code block to be executed
 }
 
Statement 1 is executed (one time) before the execution of the code block.

Statement 2 defines the condition for executing the code block.

Statement 3 is executed (every time) after the code block has been executed.

这种写法表明for循环的条件语句为空, 也就是说没有条件限制, for循环可以“无限”执行,
这样一来这个函数forLoop也不会被强制要求在整个for循环结束后return 一个int了,因为它本身可能是“无限”的。

接下来我们看看正常情况下如果不希望for循环“无限”执行,上面这个函数该怎么写:

public int forLoop(int n){
    
    
	for (int i = 1; i <= n; i++) {
    
    
		ans += (long) i;
	    if (ans >= (long)n) {
    
    
	    	return i;
	    }
	 }
	 return -1; //如果for循环设置了条件,这里就必须返回一个int才行,否则会报错
}

喜欢算法的朋友们可能已经看出来这段代码其实就是经典的“扔鸡蛋”问题的归纳法解法了。作者本身也在学习编程,讲解的不对的地方欢迎大家指正~

猜你喜欢

转载自blog.csdn.net/TylerDu/article/details/106438101