01/10/2018, 14:17

Tính s(n) = sqrt(1 + sqrt(2 + sqrt (3 + ...sqrt (n-1 + sqrt (n))))) bằng đệ quy

Đề:tính s(n) = sqrt(1 + sqrt(2 + sqrt (3 + …sqrt (n-1 + sqrt (n))))) bằng đệ quy

Quang Minh viết 16:26 ngày 01/10/2018

Khi dừng đệ quy bạn return ra 1 và bạn show cái bạn return thì nó chả sai ~~
Bài này debug từng bước rồi xem cho hiểu nhé, gửi 1 câu nói rất hay của @noname00 :))

XIN ĐỪNG INB NHỜ DEBUG CODE KHI BẠN CHƯA DEBUG ĐẾN NÁT CẢ IDE.

Edit, hàm main chưa return

Nguyen Kien viết 16:28 ngày 01/10/2018

Mình chỉ search gg với cái title của bạn ra được solution luôn (bài 750)

Diễn Đàn Đại Học

Tài liệu - Tổng hợp giải thuật hàm đệ quy

ĐỆ QUY Khái niệm : Một hàm được gọi là đệ qui nếu bên trong thân của hàm đó có lời gọi hàm lại chính nó Phân loại đệ qui : Đệ quy thường gặp thuộc...


Còn đây là code mình vừa mới viết

public class Exercises {
	public static void main(String[] args) {
		
		double res = sum(1, 3);
		System.out.println(res);
	}

	public static double sum(int i, int n) {
		if(i == n){
			return Math.sqrt(n);
		}

		return Math.sqrt(i + sum(i + 1, n));
	}
}

Hình minh họa kết quả nha :v


Bạn cứ chạy code ra giấy là vấn đề được giải quyết ngay ý mà (lưu ý: gặp một bài toán đừng nhảy vào code luôn mà hãy có sẵn một quyển vở để ghi ý tưởng đã sau mới implement tỷ lệ thành công sẽ cao hơn)

rogp10 viết 16:27 ngày 01/10/2018

Đây là do thớt hiểu sai công thức thôi. Thay n = 3 là thấy toạch ngay: s’(n) = sqrt(3 + sqrt(2+sqrt(1)) != s(n) = sqrt(1+sqrt(2+sqrt(3))).

Viết xuôi cho ct đúng sẽ là `for i=n to 1 step -1 do {s := 0} s <- sqrt(i + s), phù hợp với đệ quy đuôi. Viết như bạn thì phải hai tham số.

Từ Liên viết 16:33 ngày 01/10/2018

mình chưa học Java nên nhìn ko biết gì cả

Nguyen Kien viết 16:27 ngày 01/10/2018

Nếu bạn suy nghĩ ra vấn đề thì implement bằng ngôn ngữ nào chả được

Bài liên quan
0