Рекурсивное программирование
Рекурсия … послушать… «У попа была собака, Он ее любил. … посмотреть… встаньте между двумя зеркалами и смотрите…(не детали гардероба, нет. Отражение себя, там …) нарисовать… нарисуйте себя, где на полотне вы рисуете себя, где на полотне…
Задачи с рекурсивной формулировкой
Задание Напишите рекурсивную программу определения суммы первых n натуральных чисел: Sn = Sn-1 + n; S1 = 1. 2. Составить рекурсивную программу ввода с клавиатуры последовательность чисел (окончание ввода - 0) и вывода ее на экран в обратном порядке.
Пример: перевод натурального числа из десятичной системы счисления в двоичную.
Задание
Напишите программу: Найти первые N чисел Фибоначчи. Каждое число равно сумме двух предыдущих чисел при условии, что первые два равны 1 (1, 1, 2, 3, 5, 8, 13, 21, …). Рекурсивная постановка данной задачи:
Program chisla_Fibonachi; Program chisla_Fibonachi; var i,n:integer; function fib(nf:integer):longint; begin if (nf=1) or (nf=2) then fib:=1 else fib:=fib(nf-1)+fib(nf-2); end; begin readln(n); for i:=1 to n do writeln(fib(i)); end.
Итерация повторное выполнение некоторых действий до тех пор, пока не будет удовлетворяться некоторое условие. Большинство алгоритмов можно реализовать двумя способами:
Выводит цифры целого положительного числа в обратном порядке
Число-полиндром - число, которое имеет тот же вид при прочтении его справа налево. Например: 121, 1230321, 99 и т.п.
Решение задач Даны первый член и разность арифметической прогрессии. Написать рекурсивную функцию для нахождения: a) n-го члена прогрессии; б) суммы n первых членов арифметической прогрессии. 2. Даны первый член и знаменатель геометрической прогрессии. Написать рекурсивную функцию для нахождения: a) ее n-го члена; б) суммы n первых членов прогрессии.
3. Написать рекурсивную функцию для вычисления: 3. Написать рекурсивную функцию для вычисления: а) суммы цифр натурального числа; б) количества цифр натурального числа. 4. Написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке. 5. Написать рекурсивную функцию, определяющую является ли заданное натуральное число простым.