uzluga.ru
добавить свой файл
1


Рекурсивное программирование


Рекурсия …



Задачи с рекурсивной формулировкой





Задание

  • Напишите рекурсивную программу определения суммы первых 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 и т.п.



Решение задач



3. Написать рекурсивную функцию для вычисления:

  • 3. Написать рекурсивную функцию для вычисления:

  • а) суммы цифр натурального числа;

  • б) количества цифр натурального числа.

  • 4. Написать рекурсивную процедуру для вывода на экран цифр натурального числа в обратном порядке.

  • 5. Написать рекурсивную функцию, определяющую является ли заданное натуральное число простым.