bulmak için aşağıdaki yineleme formülünün türetilme şeklini kullanabilirsiniz:
Bu, öğesini içeren kısımda başka kaç eleman bulunduğunu göz önüne alarak kanıtlanmıştır . Bunlardan varsa , onlar için seçeneğimiz ve geri kalanını bölümlemek için seçeneklerimiz var.Bn+1=∑k=0n(nk)Bk.
n+1n−k(nn−k)=(nk)Bk
Bunu kullanarak, herhangi bir bölümünü aralığındaki bir sayıya dönüştürmek için yinelemeli bir algoritma verebiliriz . Ben zaten boyutu bir alt dönüştürücü bir yolu olduğunu varsayalım bir aralığında bir dizi (örneğin, bir algoritma Pascal'ın tekrarı ) ile aynı şekilde tasarlanabilir.n+10,…,Bn+1−1k{1,…,n}0,…,(nk)−1(nk)=(n−1k)+(n−1k−1)
içeren parçanın başka element içerdiğini varsayalım . Kodlarını bulun . Kalan tüm öğeleri bu aralığa "sıkıştırarak" bölümünü hesaplayın . Kodunu yinelemeli olarak hesaplayın . Yeni kodn+1kC1{1,…,n−k}C2C=∑l=0n−k−1(nl)Bl+C1Bn−k+C2.
Bir kod verilen diğer yönde, benzersiz bulmak , öyle ki
ve
Yana , bu şekilde yazılabilir , burada . Şimdi , içeren bölümdeki kodlar ve bölümünü kodlarCk∑l=0n−k−1(nl)Bl≤C<∑l=0n−k(nl)Bl,
C′=C−∑l=0n−k−1(nl)Bl.
0≤C′<(nk)Bn−kC1Bn−k+C20≤C2<Bn−kC1n+1C2{1,…,n−k}, özyinelemeli olarak çözülebilir. Kod çözmeyi tamamlamak için, sonraki bölümü içeren parçada görünmeyen tüm öğeleri içerecek şekilde "sıkıştırmayı" kaldırmanız gerekir .n+1
Burada bir alt kodlamak için aynı yöntemi kullanarak nasıl olduğu ait boyutu ardışık olarak. Eğer , sonra kodudur , bu nedenle varsayalım . Eğer , , boyutunun alt kümesi olarak kodu olsun ; kod olduğu . Eğer değilse , in bir kodu olmasına izin , boyutunda alt kümesi olarak ; koduS{1,…,n}kk=00k>0n∈SC1S∖{n}k−1{1,…,n−1}SC1n∉SC1Sk{1,…,n−1}Solduğu .C1+(n−1k−1)
kodunun kodunu çözmek için iki durum vardır. Eğer o kod çözme bir alt ve büyüklüğü olan kod ve çıkış . Aksi takdirde, kod çözme bir alt ve boyutu kod ve çıkış .CC<(n−1k−1)S′{1,…,n−1}k−1CS′∪{n}S′{1,…,n−1}kC−(n−1k−1)S′