Хорошо, вот что я пытаюсь сделать.Пользователь вводит число.Я пытаюсь написать рекурсивную функцию, которая подсчитывает количество последовательностей, которые суммируются до этого числа (пользовательский ввод).
Например:
Тогда число последовательностей, которые суммируют6 - это 11 (включая самого 6).
6
5+1
4+1+1
3+1+1+1
2+1+1+1+1
1+1+1+1+1+1
2+2+1+1
3+2+1
4+2
2+2+2
3+3
Я также стараюсь не повторять последовательности, например, 2 + 2 + 1 + 1 и 1 + 1 + 2 + 2.
Причина, по которой у меня нетвключенный код, я не могу найти рекурсивный способ сделать эту работу, поэтому я ищу некоторое руководство.Заранее спасибо!
ДОПОЛНЕНИЕ:
Хорошо, вот мой мыслительный процесс.6 можно разделить как ...
6
5+1
4+2
3+3
, но это еще не конец, если вы берете 5 + 1 и считаете, что часть +1 завершена;Вы используете тот же трюк, чтобы продолжить.
4+1+1
3+2+1
, но затем они начинают повторяться ..... и я не продвигаюсь дальше этого второго шага в моем плане.
Хорошо, так что код мудрый, это то, что я придумал самостоятельно.Ищите предложения, чтобы это исправить.
int sum(int number, int min, int counter)
{
int temp=0, n;
n=number+temp;
if (number>=(n/2)& number!=min)
{
while (number>=(n/2))
{
cout << number << "+"<< temp <<"\n";
number --;
temp ++;
counter ++;
}
}
sum(temp, 1,counter);
return counter;
}
int main()
{
int number;
cout << "Please enter the number: ";
cin >> number ;
cout << "\n";
sum(number, 1, 0);
return 0;
}
Я понимаю, что это все запутано.