以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才行,否则会报错
}
喜欢算法的朋友们可能已经看出来这段代码其实就是经典的“扔鸡蛋”问题的归纳法解法了。作者本身也在学习编程,讲解的不对的地方欢迎大家指正~