На просторах интернетов нашёл такую программу:
text
#include <stdio.h>
#include <iostream>
using namespace std;
int rnk( int n, int k );
int main( int argc, char *argv[] ) {
int n;
cin >> n;
cout << "Разложений: " << rnk(n,n) << endl;
return 0;
}
int rnk( int n, int k ) {
int sum= 0;
if (n == 0) { return 1; }
if (n < k)
k=n;
for (int i=1; i<=k; i++ ) {
sum += rnk( n-i, i );
}
return sum;
}
Но вот никак не пойму как действует этот рекурсивный алгоритм. Может кто доходчиво объяснить? :o
или ткните носом где читать...