30/09/2018, 18:12

Code Java tìm USCLN bị lỗi Exception StackOverflowError khi chạy

public class Bai2 {
	int x;
	Bai2 b2 = new Bai2();
	public static void main(String [] args) {
			Bai2 b2 = new Bai2();
			System.out.println(b2.UCLN(6, 9));
	}
	public int UCLN(int a, int b) {
		while (a != b) {
			if(a > b) a = a - b;
			else b = b - a;
		}
		return a;
	}
}

AI giải thích giúp mình vì sao lại bị lỗi đó với. Và tại sao phải sửa hàm UCLN thành static thì mới chạy được. Mình cám ơn.

Gió viết 20:23 ngày 30/09/2018

Lỗi là do

Bai2 b2 = new Bai2(); // trước hàm main

Khi tạo object b2 trong main nó sẽ tạo b2 ở trong class và lặp đi lặp lại như vậy. chỉ cần xóa dòng này đi là OK

viết 20:12 ngày 30/09/2018

M chưa hiểu lắm, bài khác mình vẫn gọi bt

viết 20:18 ngày 30/09/2018

ok ok, cám ơn b nhé

Bài liên quan
0