int sum(int number, int min, int counter)
{
int temp=0, n;
n=number+temp;
if ((number>=(n/2)) & (number!=min))
{
number --;
temp ++;
while (number>=(n/2))
{
cout << number << "+"<< temp << "\n";
number --;
temp ++;
counter ++;
}
}
else if (number==1)
{
return counter;
}
sum(n-1, 1,counter);
}
int main()
{
int number,counter=1;
cout << "Please enter the number: ";
cin >> number ;
cout << "\n";
sum(number, 1, counter);
cout << counter;
return 0;
}
Делает то, что мне нужно, но сбой и имеет несколько проблем с ним. Просто найдите несколько советов о том, как улучшить его.Проблема с кодом C++ для теории чисел
Также хотел убедиться, что я правильно рекурсивно тренируюсь. Благодаря!
ADD: Точка программы - это общее количество возможных путей добавления количества.
Тогда количество последовательностей, суммирующих до 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.
Для чего предназначена эта функция? Пожалуйста, предоставьте более подробную информацию. – 2010-12-08 06:59:53
Вы, разумеется, хотели логического и вот: `if ((number> = (n/2)) & (number! = Min))` – ruslik 2010-12-08 07:00:59
@ Hoàng Long: добавлено больше информации. – Zud 2010-12-08 07:04:19