Thuật toán lấy giá trị trước đó khi đã thực hiện xong hàm rồi
Nói hơi khó hiểu nhưng em cũng không biết cách nào để diễn giải dễ hiểu hơn nữa. vd
Em có 1 hàm
int[] val = {1,2,3,4};
XETTRUONGHOP(val);// val nhận 1 trong 4 giá trị 1,2,3,4
Bây giờ em phải viết hàm XETTRUONGHOP(int val);
thế nao để khi ban đầu chạy hàm xét trường hợp lấy được giá trị val ở lần 1. Lần chạy hàm XETTRUONGHOP(int val)
tiếp theo, cũng truyền vào biến val đó, nếu val giống lần đầu thì ta chạy hàm DIEUCHINH(val (giá trị val 2 lần giống nhau))
. Nếu ở lần thứ 2, biến val truyền vào hàm XETTRUONGHOP()
khác lần thứ nhất,thì ta chạy hàm DIEUCHINH(giá trị val lấy được ở lần chạyđầu tiên)
. Cứ như thế, nếu giống thì ta chạy hàm DIEUCHINH(với val của 2 lần giống nhau)
, nếu khác nhau thì ta chạy hàm DIEUCHINH(với giá trị val lấy được ở lần trước đó)
. Mọi người giúp em với. Em mất hơn 1 tiếng mà không nghĩ ra cho cái thuật toán này rồi.
Tại sao hàm XETTRUONGHOP của bạn nhận int val, nhưng bạn lại bỏ vào mảng val?
OK, mình giả sử int[] val = {1,2,3,4}; là các trường hợp có thể xảy ra của val (chẳng biết thật sự bạn muốn viết gì ở đây).
Bạn có thể tạo ra 1 hệ thống thông tin “stateful” (có tích lũy trạng thái), ở đây thì “hệ thống” là 1 function, “trạng thái” thì có thể dùng 1 biến nào đó để lưu giá trị val của lần cuối, ví dụ (javascript):
Vậy là bạn có last_val là giá trị của lần cuối cùng, còn val là giá trị mới truyền vào, đủ điền kiện để làm theo đề bài của bạn, bạn cần thiết kế trạng thái khởi tạo (initial state) sao cho hàm của bạn biết được khi nào là lần đầu tiên nó được gọi (ví dụ cho last_val bằng null hoặc -1 để nhận biết điều đó):
tạo 1 cái mảng, và 1 biến truy vết, tham chiếu hoặc tham biến biến truy vết với mảng vào hàm , ghi các giá trị nhận được sau khi chạy hàm đó, rồi truy vết lại theo vị trí của biến truy vết
khai báo 1 biến static là xong ~.~
Viết ra thế thì gọi là dạy nhau làm rồi.
Có gì khó đâu nhỉ
Tạo 1 biến static Map lưu số lần tương ứng với giá trị của lần đó. Khi nào cần thì get thôi còn nếu sợ chạy nhiều lần tốn bộ nhớ thì chỉ cần check điều kiện rồi xoá là được
Hi mai.