Школа179: Oner Xaum/Рекурсия
 

Рекурсия.



Задачи



1.

в первых трех пунктах этой задачи разрешается использовать лишь одну рекурсивную функцию с одним параметром.

Для заданного натурального n вывести все числа от 1 до n:
  1. в обратном порядке.
  2. в прямом порядке.
  3. сперва в обратном порядке, а затем в прямом.
  4. сперва в прямом порядке, а затем в обратном, используя только дополнительную рекурсивную функцию.
  5. сперва в прямом порядке, а затем в обратном, используя только дополнительный параметр.
  6. сперва в обратном порядке, а затем в прямом только четные.



2.
  1. Написать рекурсивный вариант функции возведения в натуральную степень.
  2. Написать функцию, вычисляющую произведение двух натуральных чисел. (операцией умножения пользоваться запрещается.)
  3. Написать рекурсивный вариант функции возведения в натуральную степень, используя только операции прибавления и вычитания единицы (++ и — соответственно).


3.
Для заданного n вычислить n –й член последовательности Фибоначчи.

4.
Для заданного натурального n и b (1 < b < 11) вывести запись числа n в системе счисления с основанием b.

5.
  1. Для заданных натуральных m и n вывести прямоугольник m на n.
  2. Для заданного натурального n прямоугольный равнобедренный треугольник с прямым углом слева вверху и с катетами равными n.
  3. Для заданного натурального n прямоугольный равнобедренный треугольник с прямым углом слева внизу и с катетами равными n.
  4. Для заданного натурального n равнобедренный треугольник с вертикальным основанием слева, равным 2n – 1.
  5. Для заданного натурального n равнобедренный треугольник вершиной вниз с высотой n и основанием 2n-1.
  6. Такой же треугольник вершиной вверх.


Примеры:
..***********.....*******...*...........*.......*************..........*.......
..***********.....******....**..........**.......***********..........***......
..***********.....*****.....***.........***.......*********..........*****.....
..***********.....****......****........****.......*******..........*******....
..***********.....***.......*****.......***.........*****..........*********...
..***********.....**........******......**...........***..........***********..
..***********.....*.........*******.....*.............*..........*************.
...............................................................................
......(a)........(b).........(c).......(d)...........(e)..............(f)......
...m=11,n=7;.....n=7;........n=7;......n=4;..........n=7;.............n=7;.....



Примечание: Точки в примерах поставлены вместо пробелов исключительно из-за своеобразия формата вако-вики.

6. («Ханойские башни»)
Есть три стержня A, B, и C. На стержень A надето n дисков, причем диски отличаются размером и лежат меньший на большем. Задача состоит в том, чтобы перенести все диски со стержня A на стержень C, пользуясь стержнем B, как вспомогательным, За один раз разрешается переносить только один диск, причём нельзя класть больший диск на меньший.
Написать программу, которая воспроизведет инструкцию по порядку переноса дисков. Каждая инструкция записывается в формате:
<имя стержня, откуда переносится диск> -> <имя стержня, куда переносится диск>

Пример для n=2:

A -> B
A -> C
B -> C

Примечание: желательно найти два решения этой задачи: (a) с использованием дополнительной переменной; (b) с использованием дополнительного параметра

7. (необязательно)
Фракталы.
Используя какую-нибудь графическую библиотеку, постройте изображения следующих фракталов:
  1. треугольник Серпинского
  2. квадрат Серпинского
  3. кривая Леви
  4. кривая дракона
  5. снежинка Коха

8.
Вывести в порядке возрастания все правильные дроби со знаменателями, не превышающим заданного n.

9.
Найти число сочетаний из n по k (-1 < k < n+1 < 60)
  1. -1 < k < n+1 < 12
  2. -1 < k < n+1 < 36