• Плиииизззз... с помощью рекурсии Дано натуральное число N. Требуется получить и вывести на экран все возможные различные способы представления этого числа в виде суммы натуральных чисел (то есть, 1 + 2 и 2 + 1 – это один и тот же способ разложения числа 3). Решите задачу с помощью рекурсив-ной процедуры.
    Пример:
    Введите натуральное число:
    4
    1 + 1 + 1 + 1
    1 + 1 + 2
    1 + 3
    2 + 2

Ответы 11

  • Надо, чтобы без массива была
    • Автор:

      alexus79
    • 6 лет назад
    • 0
  • что изменить, чтобы считала правильно
    • Автор:

      lucky66
    • 6 лет назад
    • 0
  • program ex1;var n,t: integer; procedure A(p, v, s: integer);var i: integer;begin if s > 0 then for i := v to s do begin t := i; A(p + 1, i, s - t); end else if t < n then begin write(t); for i := 2 to p - 1 do write(' + ', t); writeln; end;end;begin read(n); A(1, 1, n);end.
  • Можно и без массива, но это намного сложнее, да и вообще будет работать дольше
    • Автор:

      lilymjln
    • 6 лет назад
    • 0
  • мне вот и надо без массива, это обязательное условие
    • Автор:

      butchpvnc
    • 6 лет назад
    • 0
  • в школе
    • Автор:

      edward34
    • 6 лет назад
    • 0
  • тогда прям на уроке говоришь что нужна была одна функция, ее не учили, полез в гуголь искать и нашел, может она не правильная, подскажите как надо
    • Автор:

      david4
    • 6 лет назад
    • 0
  • на то она и школа чтоб учили и помогали
  • спасибо, попробую
  • нечта
  • var  n: integer;  a: array[1..100] of integer;procedure gen(pos, prev, sum: integer);var i: integer;begin  if sum > 0 then  for i := prev to sum do  begin    a[pos] := i;    gen(pos + 1, i, sum - i);  end  else if a[1] < n then  begin    write(a[1]);    for i := 2 to pos - 1 do write(' + ', a[i]);    writeln;  end;end;begin  read(n);  gen(1, 1, n);end.
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years