Просмотр кода страницы Рекурсия страница

====%%(wacko wrapper=text wrapper_align=center) Рекурсия. %%==

  *  **Во всех задачах этого листка !!запрещается!! пользоваться !!циклами и глобальными переменными.!!**
  *  **В первых пяти задачах !!запрещается!! использовать переменные в рекурсивных функциях.**
  *  **Ноль присоединяется к множеству натуральных чисел.**

%%(wacko wrapper=text wrapper_align=center) ===== Задачи == %%

** 1.**

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

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



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


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

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

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


//**Примеры:**//
##""..***********.....*******...*...........*.......*************..........*.......""##
##""..***********.....******....**..........**.......***********..........***......""##
##""..***********.....*****.....***.........***.......*********..........*****.....""##
##""..***********.....****......****........****.......*******..........*******....""##
##""..***********.....***.......*****.......***.........*****..........*********...""##
##""..***********.....**........******......**...........***..........***********..""##
##""..***********.....*.........*******.....*.............*..........*************.""##
##""...............................................................................""##
##""......(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.**  //(необязательно)//
Фракталы. 
Используя какую-нибудь графическую библиотеку, постройте изображения следующих фракталов:
  a. треугольник Серпинского
  a. квадрат Серпинского
  a. кривая Леви
  a. кривая дракона
  a. снежинка Коха

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

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