Здравствуйте, Alick, Вы писали:
A>Что-то у меня затык произошел. Никак не могу сообразить, как написать алгоритм перебора с переменным количеством параметров. Т.е. требуется получить таблицу значений функции f(x1, x2...) для всех целых xi, заданных на определенном диапазоне. Притом, количество переменных (imax) заранее не известно.
A>Подкиньте идею, желательно в коде на "C" (не С++). И, если можно, без рекурсии.
Многоразрядный счетчик
// типа абстракция задачи :)
int n;
int lbound[n];
int ubound[n];
int x[n]; // текущие значения; lbound[i] <= x[i] < ubound[i]
void f(int *x); // передаем внутрь массив длины n
///////////////////////////////////
void init()
{
int i;
for(i = 0; i < n; ++i)
x[i] = lbound[i];
}
int step() // 0 -- дальше некуда
{
for(i = 0; i < n; ++i)
{
if(++x[i] < ubound[i])
return 1;
x[i] = lbound[i];
// перенос в следующий разряд
}
return 0; // переполнение
}
void run()
{
init();
do
{
f(x);
}
while(step());
}
Если хочется — функции init(), step() можно заинлайнить внутри run().