Как сделать это рекурсивно, если функция зависит только от одного параметра - PullRequest
0 голосов
/ 10 мая 2019

Мне нужно сделать это с помощью рекурсии, но проблема в том, что функция зависит только от ОДНОГО параметра, а внутри функции - от двух (k и n), а также как найти минимальное значение, если возвращается только одно значение?

Функция:

[]

Я уже пытался сделать случайное k, но я не думаю, что это действительно хорошая идея.

F1(int n) {
  Random random = new Random();
  int k = random.Next(1,10);
  if (1 <= k && k <= n){
    return Math.Min(F1(k - 1) + F1(n - k) + n);
  } else {
    return 0;
  }
}

1 Ответ

1 голос
/ 10 мая 2019

Вам нужно сделать цикл, пересекающий все значения k в диапазоне 1..n.Как то так:

F1(int n) {
   if (n == 0) 
      return ????  what is starting value?
   minn = F1(0) + F1(n - 1) + n
   for (int k = 2; k <= n; k++)
     minn =  Math.Min(minn, F1(k - 1) + F1(n - k) + n);
   return minn;
}
...