Para um dado inteiro a, encontre todas as combinações únicas de números inteiros positivos que somam um
Não é uma pergunta de lição de casa. Eu estava passando as perguntasaqui e me deparei com essa pergunta. Alguém respondeu. Eu tentei muito entender a recursão usada, mas não sou capaz de obtê-la. Alguém poderia me explicar?
Escreva uma função, para um determinado número, imprima todas as maneiras diferentes de fazer esse número, usando adição e qualquer número igual ou menor que esse número e maior que zero.
Por exemplo, dadoa = 5
, temos as sete maneiras a seguir para compor 5:
A solução do site está em C ++:
void printSeq( int num , int a[] , int len , int s )
{
if( num <= 0 )
{
for( int j = 0 ; j < len ; j++ )
cout << a[ j ] << "," ;
cout << endl;
return;
}
for(int i = s ; i <= num ; i++)
{
a[ len ] = i;
printSeq( num - i , a , len + 1 , i );
}
}
int main()
{
int a[5];
printSeq(5,a,0,1);
cin.get();
return 0;
}