profile
Размещено 5 лет назад по предмету Информатика от XameleonRus

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

  1. Ответ на вопрос
    Ответ на вопрос дан Pashq4
    const PTR = 10;
    type razbivka = array[0..PTR] of byte;
    var n, i, z, k: byte;
    x: razbivka;
    procedure p(var x: razbivka; var z: byte);
    var i, j, s: byte;
    begin
    i := z - 1;
    s := x[z];
    while (i > 1) and ( x[i - 1] <= x[i] ) do
    begin
    s := s + x[i];
    dec(i);
    end;
    inc( x[i] );
    z := i + s - 1;
    for j := i + 1 to z do
    x[j] := 1;
    end;
    begin
    write('Введите число: ');
    readln(n);
    write(n,' = ');
    z := n;
    for i := 1 to z do
    x[i] := 1;
    for i := 1 to n do begin
    if i > 1 then write(' + ');
    write( x[i], '' );
    end;
    writeln;
    repeat
    p( x, z );
    inc(k);
    write( n,' = ' );
    for i := 1 to z do begin
    if i > 1 then write(' + ');
    write( x[i], '' );
    end;
    writeln;
    until z = 1;
    end.

    p.s: нашел в интернете для вас вариант с рекурсией. Сами можете убедиться, что с ней только хуже (по быстродействию уж точно)

    const  m = 100;
    var  a: array[1..m] of integer;
    k, n: integer;
    procedure p(j,n: integer);
    var  i: integer;
    begin if ( n = 0 ) and ( k > 1 ) then
    begin  for i := 1 to k do
    write( a[i] : 4 );
    writeln;
    end else for i := j to n do
    begin
    Inc(k);
    a[k] := i;
    p( j, n - i );
    Dec(k);
    end;
    end;
    begin
    write('Введите число: ');
    readln(n);
    k := 0;
    p(1,n);
    end.

    значения PTR и m можно поставить и больше, но тогда я не ручаюсь)
    1. Ответ на вопрос
      Ответ на вопрос дан XameleonRus
      Вау, если ввести в программе с рекурсией число 100 получается очень красиво ^_^
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.