Опубликован: 19.02.2009 | Доступ: свободный | Студентов: 3073 / 803 | Оценка: 4.35 / 4.11 | Длительность: 16:28:00
ISBN: 978-5-94774-401-9
Лекция 6:

Рекурсивные методы

< Лекция 5 || Лекция 6: 123 || Лекция 7 >

Практикум

  1. Разработать рекурсивный метод (возвращающий значение):
    1. для вычисления n -го члена следующей последовательности b_{1} = -10, b_{2} = 2, b_{n+2} = |b_{n}| – 6 b_{n+1}.
    2. для вычисления n -го члена следующей последовательности b_{1} = 5, b_{n+1} = b_{n}/(n^{2}+n+1)
    3. для нахождения наибольшего общего делителя методом Евклида:

      НОД(a,b)=\left\{\begin{array}{ll}
a, & \text{если } a=b;\\
НОД(a-b,b), &  \text{если } a > b;\\
НОД(a,b-a), &  \text{если } b > a;\end{array}

    4. для вычисления значения функции Аккермана для неотрицательных чисел n и m. Функция Аккермана определяется следующим образом:

      A(n,m)=\left\{\begin{array}{ll} m+1, & \text{если } n=0;\\ A(n-1,1), &  \text{если } n \ne 0, m=0;\\ A(n-1, A(n,m-1)), &  \text{если } n > 0, m>0. \end{array}

    5. для вычисления числа сочетаний C(n, m) где 0 \le m \le n, используя следующие свойства

      C_n^0 = C_n^n =1; C_n^m = C_{n-1}^{m} + C_{n-1}^{m-1} =1; при 0<m<n.

    6. вычисляющий число а, для которого выполняется неравенство 2^{a-1} \le n \le 2^{a}, где n – натуральное число. Для подсчета числа а использовать формулу: a(n)=\left\{\begin{array}{ll}
1, & \text{если } n=1;\\
a(n/2), &  \text{если } n >1;
\end{array}
    7. для вычисления x^{n} ( x –вещественное, x \ne 0, а n –целое) по формуле:

      x^n=\left\{\begin{array}{ll}
1, & \text{если } n=0;\\
\frac{1}{x^{|n|}}, &  \text{если } n <0;\\
x \cdot{x^{n-1}}, &  \text{если } n >0;
\end{array}. Вычислить значение x^{n} для различных x и n.

    8. для вычисления \sum_{i=1}^n{i}, где n – натуральное число. Для заданных натуральных чисел m и k вычислить с помощью разработанного метода значение выражения \sum_{i=1}^n{i}+\sum_{i=1}^{2k}{i}.
    9. для вычисления значения функции F(N)=\frac{N}{\sqrt{1+\sqrt{2+\sqrt{3+...\sqrt{N}}}}}.

      Найти ее значение при заданном натуральном N.

    10. для вычисления цепной дроби: \cfrac{x}{1+\cfrac{x}{2+\cfrac{x}{3+ ... \cfrac{x}{n+x}}}}. Найти значение данной дроби при заданном натуральном n.
  2. Разработка рекурсивных методов ( не возвращающих значений):
    1. Даны первый член и разность арифметической прогрессии. Написать рекурсивный метод для нахождения n -го члена и суммы n первых членов прогрессии.
    2. Даны первый член и знаменатель геометрической прогрессии. Написать рекурсивный метод для нахождения n-го члена и суммы n первых членов прогрессии.
    3. Разработать рекурсивный метод, который по заданному натуральному числу N ( N \ge 1000 ) выведет на экран все натуральные числа не больше N в порядке возрастания. Например, для N=8, на экран выводится 1 2 3 4 5 6 7 8.
    4. Разработать рекурсивный метод, который по заданному натуральному числу N ( N \ge 1000 ) выведет на экран все натуральные числа не больше N в порядке убывания. Например, для N=8, на экран выводится 8 7 6 5 4 3 2 1.
    5. Разработать рекурсивный метод для вывода на экран стихотворения:
      10 лунатиков жили на луне
      10 лунатиков ворочались во сне
      Один из лунатиков упал с луны во сне
      9 лунатиков осталось на луне
      9 лунатиков жили на луне
      9 лунатиков ворочались во сне
      Один из лунатиков упал с луны во сне
      8 лунатиков осталось на луне
      ......
      И больше лунатиков не стало на луне
    6. Дано натуральное число n. Разработать рекурсивный метод для вывода на экран следующей последовательности чисел:
      1
      2 2
      3 3 3
      n n n n
    7. Дано натуральное число n. Разработать рекурсивный метод для вывода на экран следующей последовательности чисел:
      1
      2 1
      3 2 1
      n n-1 n-2 1
    8. Разработать рекурсивный метод для вывода на экран цифр натурального числа в прямом порядке. Применить эту процедуру ко всем числам из интервала от А до В.
    9. Разработать рекурсивный метод для перевода числа из десятичной системы счисления в двоичную.
    10. Разработать рекурсивный метод для перевода числа из двоичной системы счисления в десятичную.
    11. Разработать рекурсивный метод для вывода на экран всех делителей заданного натурального числа n.
    12. Дано натуральное четное число n. Разработать рекурсивный метод для вывода на экран следующей картинки:
      ********* (0 пробелов, n звездочек)
      ******** (1 пробел, n-1 звездочка)
      ******* (2 пробела, n-2 звездочки)
      * (n-1 пробел, 1 звездочка)
    13. Дано натуральное четное число n. Разработать рекурсивный метод для вывода на экран следующей картинки:
      * * (n пробелов между звездочками)
      ** ** (n-2 пробела)
      *** *** (n-4 пробела)
      ***** ***** (2 пробела)
      ********** (0 пробелов)
      ***** ***** (2 пробела)
      *** *** (n-4 пробела)
      ** ** (n-2 пробела)
      * * (n пробелов
    14. Дано натуральное число n. Разработать рекурсивный метод для вывода на экран следующей картинки:
      1 (1 раз)
      222 (3 раза)
      33333 (5 раз)
      (n раз)
      33333 (5 раз)
      222 (3 раза)
      1 (1 раз)
    15. Разработать рекурсивный метод для вывода на экран следующей картинки:
      AAAAAAAAAA…AAAAAAAAAA (80 раз)
      BBBBBBBBB…BBBBBBBB (78 раз)
      СССССССС …СССССССС (76 раз)
      YYY…YYY (32 раза)
      ZZ...ZZ (30 раз)
      YYY…YYY (32 раза)
      СССССССС …СССССССС (76 раз)
      BBBBBBBBB…BBBBBBBB (78 раз)
      AAAAAAAAAA…AAAAAAAAAA (80 раз)

Самостоятельная работа

Задача 1. Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на множители (без повторений). Например, для n=12 на экран должно быть выведено:

2*2*3=12
2*6=12
3*4=12

Задача 2. Разработать рекурсивный метод для вывода на экран всех возможных разложений натурального числа n на слагаемые (без повторений). Например, для n=5 на экран должно быть выведено:

1+1+1+1+1=5
1+1+1+2=5
1+1+3=5
1+4=5
2+1+2=5
2+3=5
< Лекция 5 || Лекция 6: 123 || Лекция 7 >