Урок 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
- 1432 reads
vedro-compota
Wed, 01/12/2022 - 20:56
Permalink
Задача 2 Дано целое
--решить с одной переменной
-попробовать уменьшить количество переменных
_____________
матфак вгу и остальная классика =)