笀彧 2021-03-27 15:06 采纳率: 50%
浏览 37
已采纳

运行出来的结果少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++;    
        }
    }
}

  • 写回答

1条回答 默认 最新

  • 小亮点科技 2021-03-27 15:16
    关注

    当 

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

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

    if (exchange == 0) {

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

    明白了吗?

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?