在编程的过程中有一种经常会出现的错误叫做“差一错误”,指的是在循环的过程中多循环了一次或者少循环了一次。
这种错误经常会让我们犯糊涂,有的人会通过测试来调整这种错误,但是不是每次都有测试的条件的,今天就介绍一种比较可行的判断循环到底循环多少次的方法,用的就是中学所学的数学归纳法。
判断下面这个循环体到底执行了多少次?(假定n<=m)
for (int i = n; i < m; i++) {...}
首先来看初始情况当m == n的时候循环体很显然执行了0次,所以我们可以预测循环体执行了m-n次
假设循环体执行了m-n次
当m==n的时候假设成立
我们需要证明当m' = m+1时假设同样成立,很显然当m' = m+1时循环比m时多执行了一次,即循环执行了(m+1)-n次,证明完毕。
其它的比如do while和while也可以用相同的方法证明。