Một phương pháp ngây thơ là gì?


Câu trả lời:


15

Đây không phải là một thuật ngữ kỹ thuật với ý nghĩa chính xác, nó chỉ là từ tiếng Anh "ngây thơ". Trong bối cảnh khoa học máy tính, từ này thường có nghĩa là "một trong những điều bạn sẽ nghĩ đến đầu tiên, nhưng không nhận ra một thực tế ít rõ ràng nhưng quan trọng".

Chẳng hạn, nếu người ta biết định nghĩa về các số Fibonacci là , thì việc triển khai "ngây thơ" sẽ làFTôib(n)= =FTôib(n-1)+FTôib(n-2)

def Fib(n):
  if n <= 1:
    return 1
  else:
    return Fib(n-1) + Fib(n-2)

Có vấn đề gì vậy? Rằng nếu chúng ta gọi là, nói, Fib(7)thì chúng ta sẽ chỉ làm cho rất nhiều các cuộc gọi lặp đi lặp, chẳng hạn như Fib(4)(vì Fib(7)các cuộc gọi Fib(6)Fib(5), và Fib(6)các cuộc gọi Fib(5)Fib(4), và cả hai lần chúng ta gọi Fib(5)nó gọi Fib(4)Fib(3), vân vân).

Vì vậy, ở đây một giải pháp "tinh vi" hơn, trái ngược với ngây thơ, giải pháp sẽ giống như lập trình động và tránh tất cả các tính toán bổ sung.



0

Thực hiện ngây thơ là giải pháp mà nó trông đơn giản và ít khó khăn nhất có thể.

Trong một số trường hợp, nó có thể không có hành vi không gian hoặc thời gian tốt, như việc triển khai ngây thơ của hàm Fibonacci (hàm mũ chứ không phải tuyến tính).

Nhưng trong nhiều trường hợp, nó có thể hoạt động tốt hầu hết thời gian. Vì vậy, không có gì sai với cách tiếp cận ngây thơ, bạn có thể thực hiện theo 3 bước:

"Làm cho nó hoạt động" (theo yêu cầu) -> "Làm cho nó thanh lịch / đẹp đẽ" (tái cấu trúc, dễ đọc hơn) -> "Làm cho nhanh" (tối ưu hóa hiệu suất)

Đối với các ngôn ngữ lập trình có truyền thống "kỹ thuật quá mức" như Java, tôi sẽ đề xuất "giải pháp đơn giản nhất" bất kỳ ngày nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.