Witam
Siedzę już dobre kilka godzin nad rekurencją i nie bardzo wiem jak ją zbudować. Mianowicie chodzi o podpunkt c) zadania :

 Projekt polega na wykonaniu aplikacji umożliwiającej dla podanego pliku:
a) określenie rozkładu prawdopodobieństwa występowania znaków w podanym pliku (zestaw znaków dalej będzie nazywany alfabetem). Plik należy czytać binarnie (nie jest ważna interpretacja zawartości pliku). Przez znak należy rozumieć dowolny symbol z ASCII, któremu odpowiada wartość z przedziału [0,255]. Na podstawie uzyskanego rozkładu prawdopodobieństwa należy obliczyć autoinformację dla każdego znaku oraz entropię dla tego rozkładu.
b) Zestawienie znak-prawdopodobieństwo należy posortować według prawdopodobieństwa malejąco, a następnie obliczyć skumulowaną sumę prawdopodobieństwa (dystrybuantę empiryczną).
c) Zbudować kody według metody Shannona. Można wykorzystać do tego uzyskaną dystrybuantę dzieląc rekurencyjnie zestaw znaków według prawdopodobieństwa na pół, aż do uzyskania zestawów jednoznakowych. Za każdym podziałem górnej połowie przypisywać "1", a dolnej "0". W ten sposób uzyskane zostanę kody binarne dla poszczególnych znaków.
d)  Wykorzystując uzyskane kodowanie obliczyć współczynnik kompresji dla podanego pliku przy tak uzyskanym kodowaniu.

Mógłby mi ktoś podpowiedzieć jak się w ogóle zabrać za tą rekurencję ?
W załączniku dołączam kod reszty programu.

  • kod.txt (0 MB) - ściągnięć: 124