2015-12-09 2 views
0

1. Я только понял, вычисляя один пример биномиального коэффициента шаг за шагом. но когда дело доходит до псевдокода, я немного смущен. особенно эта часть для (j = минимум (i, k); j> = 0; j--).
и что еще я понял, так это то, что n - это размер столбца, а k - размер строки. Я хочу знать, правильно ли я понял.Псевдокод биномиального коэффициента

int bin2(int n, int k) 
{ 
    index i, j; 

    int B[0...k]; 

    for(i = 0;i <= n; i++) 
    { 
     for(j = minimum(i, k); j >= 0; j--) 
     { 
      if(j == 0 || j == i) 
       B[j]=1; 
      else 
       B[j] = B[j - 1] + B[j]; 
     } 
    } 

    return B[n][k]; 
} 
+2

'B [n] [k]' не имеет смысла, если 'B' является 1-мерным массивом. Если вы пытаетесь создать треугольник Паскаля, вам нужен 2-й массив. –

+0

Также - вычисление биномиального коэффициента путем вычисления всего треугольника Паскаля над ним (которое вы пытаетесь сделать) неэффективно. Имеются рекуррентности, позволяющие вычислять n-ю строку без вычисления предыдущих строк. См. Http://stackoverflow.com/q/15580291/4996248 –

ответ

0

Это циклон стиля c. Что он говорит, итерации с j от минимального (i, k) до 0 (или до тех пор, пока j> = 0) с шагом -1 (j - уменьшается j на 1).

Возврат должен быть прочитан B [k], потому что это 1-мерный массив.