运行出来的结果少1?没想明白

 

public class Main {
    public static void main(String[] args) {        
        int l=2019;
        int d = 324;
        int exchange = 0;
        int s=0;
        for (int i = 0;; i++) {
             exchange =l-d;             
             if (exchange == 0) {
                System.out.println(s);
                break;
             }
             l = exchange>d?exchange:d;
             d = exchange>d?d:exchange;
             s++;    
        }
    }
}

当 

if (exchange == 0) {
                System.out.println(s);
                break;
}

这个条件成立时其实是最后一个正方形。这个时候应该在break前s++

if (exchange == 0) {

                s++
                System.out.println(s);
                break;
}

明白了吗?

希望有对你有所帮助,欢迎关注我的博客,我会持续发布技术文章,谢谢。