Пример: предположим, что ваш пользовательский ввод равен 6.
Тогда число последовательностей, суммирующих до 6, равно 11 (включая само 6). :Проблема с функцией рекурсивной разбивки (числовая теория)
Проблема, с которой я сталкиваюсь, заключается в том, что она работает, когда пользователь вводит 1 или 6, но в противном случае это не так, и я не могу понять, почему.
Partition может предоставить дополнительную информацию по этому вопросу, если необходимо.
Заранее благодарен.
#include <iostream>
using namespace std;
int sum(double number, int min, int & counter)
{
int temp=0, n;
n=number+temp;
if (number>=(n/2.0)+.5 && (number!=1))
{
number --;
temp ++;
while (number>=(n/2.0))
{
number --;
temp ++;
counter ++;
}
}
else if (number==1)
{
counter ++;
return 0;
}
sum(n-1, 1,counter);
return 0;
}
int main()
{
int counter=1;
double number;
cout << "-------------------------------------------------------\n"
<< "Please enter the number: ";
cin >> number ;
cout << "\n";
if (number!=1)
{
sum(number, 1, counter);
}
cout << "The total number of combinations that result in a sum of "
<< number << " is: " << counter
<< "\n-------------------------------------------------------\n";
return 0;
}
возможно дубликат [пытаюсь написать рекурсивную функцию, которая подсчитывает количество последовательностей, просуммировать до этого числа C++] (HTTP://stackoverflow.com/questions/4384021/trying-to-write-a-recursive-function-that-counts-the-number-of-sequences-that-sum) – Beta 2010-12-10 07:46:19
Читайте, и вы узнаете об этом не .... – Zud 2010-12-10 07:52:49