Урок 21.Рекурсия. Задачи 1-7
Primary tabs
Задача 1 Дано целое положительное число N. Выведите на экран все число от N до 1 (по убыванию).
program recursion2;
var d : integer;
function digits(d: integer): integer;
begin
if(d <> 0) then
begin
writeln(d);
digits := (digits(d - 1));
end;
end;
begin
write(digits(4));
readln();
end.Задача 2 Дано целое положительное число N. Выведите на экран все число от 1 до N (по возрастанию).
program recursion2;
var n : integer;
procedure numbers(n,m: integer);
begin
if(n <= m - 1 ) then
begin
writeln(n + 1);
numbers(n + 1, m);
end
end;
begin
numbers(0,12);
readln();
end. Задача 3 Дано целое положительное число A и целое положительно число B. Выведите на экран все числа, расположенные между между ними.
<pre class="brush: delphi">program recursion3;
var d : integer;
function numbers(n,m: integer): integer;
begin
if(n < m - 1) then
begin
writeln(n + 1);
numbers := (numbers(n + 1, m));
end;
end;
begin
numbers(3,9);
readln();
end.</pre>Задача 4 Дано целое положительное число N, вычислите N! (эн факториал)
var n : integer;
function factorial(n: integer): integer;
begin
if(n = 1 ) then
begin
factorial := n;
end
else
begin
factorial := n * factorial(n - 1);
end;
end;
begin
write(factorial(4));
readln();
end.Задача 5 Пользователь получает на вход целое положительное число N напишите рекурсивную процедуру, которая выведет все числа Фиббоначи от первого до N-ого
program recursion6;
var n, m, h, k, l : integer;
function fibonaci(n, m, h: integer): integer;
begin
k := 0;
if(n = 1) then
begin
writeln(n);
fibonaci := n;
end
else if(m = 1) then
begin
k := m;
writeln(m);
writeln(k);
k := 0;
l := 1;
h := 1;
end
else
begin
l := 0;
writeln(m);
k := h;
h := m;
end;
if(n > m) and (h + k <= n)then
fibonaci := fibonaci(n, m + l + k, h);
end;
begin
fibonaci(10, 1, 0);
readln();;
end. Задача 6 Пользователь получает на вход целое положительное число N напишите рекурсивную функцию, которая вернет число Фиббоначи стоящии под этим номером
program recursion7;
var n : integer;
function fibonaci(n: integer): integer;
begin
if(n = 1) then
begin
fibonaci := 0;
end
else if (n = 2) then
begin
fibonaci := 1;
end
else
begin
fibonaci := fibonaci(n-1) + fibonaci(n-2);
end;
end;
begin
write(fibonaci(9));
readln();
end.Задача 7 Дано натуральное число N. Вычислите сумму его цифр.
program recursion5;
var n, k, r : integer;
function summa(n, r: integer): integer;
begin
if(0 < n) then
begin
k := n mod 10;
n := n div 10;
r += k;
summa := summa(n,r);
end
else
begin
summa := r;
end;
end;
begin
writeln(summa(10020030, 0));
readln();
end.- Log in to post comments
- 2021 reads
vedro-compota
Wed, 01/12/2022 - 20:56
Permalink
Задача 2 Дано целое
--решить с одной переменной
-попробовать уменьшить количество переменных
_____________
матфак вгу и остальная классика =)