function RecList = DUoR(p, C, popMovies, N, lessPopMovies) RecList = []; % Başlangıçta boş bir öneri listesi for k = 1:N if k == 1 [~, i] = max(p(C)); % En yüksek tahmin değerine sahip ürünü seçer RecList = [RecList; C(i)]; % Seçilen ürünü öneri listesine ekler C(i) = []; % Seçilen ürünü aday listesinden çıkarır else tempC = []; % Geçici aday ürün kümesi popRecListRatio = sum(ismember(RecList, popMovies)) / max(1, length(RecList)); % Popüler ürünlerin oranını hesapla for j = 1:length(C) isPopular = ismember(C(j), popMovies); if isPopular && popRecListRatio < 0.4 tempC = [tempC, C(j)]; % Popüler ürün ekler elseif ~isPopular && popRecListRatio >= 0.4 tempC = [tempC, C(j)]; % Az popüler ürün ekler end end if isempty(tempC) tempC = C; % Eğer geçici küme boşsa kalan tüm adaylar kullanılacaktır end [~, i] = max(p(tempC)); % Geçici kümedeki en yüksek tahmin değerine sahip ürünü seçer RecList = [RecList; tempC(i)]; % Öneri listesine ekler C(C == tempC(i)) = []; % Seçilen ürünü aday listesinden çıkarır end end end