Skip to content

Latest commit

 

History

History
180 lines (120 loc) · 42 KB

RECUR.md

File metadata and controls

180 lines (120 loc) · 42 KB

Recur 1

en Write a recursive real-valued function Fact(N) that returns the value of N-factorial:N! = 1·2·…·N,where N (> 0) is an integer parameter. Using this function, output factorials of five given integers.

ru Описать рекурсивную функцию Fact(N) вещественного типа, вычисляющую значение факториалаN! = 1·2·…·N(N > 0 — параметр целого типа). С помощью этой функции вычислить факториалы пяти данных чисел.


Recur 2

en Write a recursive real-valued function Fact2(N) that returns the value of double factorial of N:N!! = N·(N−2)·(N−4)·…,where N (> 0) is an integer parameter; the last factor of the product equals 2 if N is an even number, and 1 otherwise. Using this function, output double factorials of five given integers.

ru Описать рекурсивную функцию Fact2(N) вещественного типа, вычисляющую значение двойного факториалаN!! = N·(N−2)·(N−4)·…(N > 0 — параметр целого типа; последний сомножитель в произведении равен 2, если N — четное число, и 1, если N — нечетное). С помощью этой функции вычислить двойные факториалы пяти данных чисел.


Recur 3

en Write a recursive real-valued function PowerN(XN) that returns the power XN (X ≠ 0 is a real number, N is an integer) calculated as follows: X 0 = 1,
X N = (X N div 2)2 if N is a positive even number,
X N = X·X N−1 if N is a positive odd number,
X N = 1/X −N if N < 0,where "div" denotes the operator of integer division. Using this function, output powers XN for a given real number X and five given integers N.

ru Описать рекурсивную функцию PowerN(XN) вещественного типа, находящую значение N-й степени числа X по формулам: X 0 = 1,
X N = (X N/2)2 при четных N > 0,        X N = X·X N−1 при нечетных N > 0,
X N = 1/X −N при N < 0(X ≠ 0 — вещественное число, N — целое; в формуле для четных N должна использоваться операция целочисленного деления). С помощью этой функции найти значения X N для данного X при пяти данных значениях N.


Recur 4

en Write a recursive integer function Fib1(N) that returns the Fibonacci number FN (N is a positive integer). The Fibonacci numbers FK are defined as: F1 = F2 = 1,        FK = FK−2 + FK−1,    K = 3, 4, … .Using the function Fib1, find the Fibonacci numbers FN for five given integers N; output the value of each Fibonacci number and also the amount of the recursive function calls, which are required for its calculation.

ru Описать рекурсивную функцию Fib1(N) целого типа, вычисляющую N-й элемент последовательности чисел Фибоначчи (N — целое число): F1 = F2 = 1,        FK = FK−2 + FK−1,    K = 3, 4, … .С помощью этой функции найти пять чисел Фибоначчи с данными номерами, и вывести эти числа вместе с количеством рекурсивных вызовов функции Fib1, потребовавшихся для их нахождения.


Recur 5

en Write a recursive integer function Fib2(N) that returns the Fibonacci number FN (N is a positive integer). The Fibonacci numbers FK are defined as: F1 = F2 = 1,        FK = FK−2 + FK−1,    K = 3, 4, … .The integer N is assumed to be not greater than 20. Decrease the amount of recursive calls of the function Fib2 (in comparison with the Fib1 function from the task Recur4) by means of using an additional array of integers that should store the Fibonacci numbers having been calculated. Using the Fib2 function, output the Fibonacci numbers FN for five given integers N.

ru Описать рекурсивную функцию Fib2(N) целого типа, вычисляющую N-й элемент последовательности чисел Фибоначчи (N — целое число): F1 = F2 = 1,        FK = FK−2 + FK−1,    K = 3, 4, … .Считать, что номер N не превосходит 20. Для уменьшения количества рекурсивных вызовов по сравнению с функцией Fib1 (см. задание Recur4) создать вспомогательный массив для хранения уже вычисленных чисел Фибоначчи и обращаться к нему при выполнении функции Fib2. С помощью функции Fib2 найти пять чисел Фибоначчи с данными номерами.


Recur 6

en Write a recursive integer function Combin1(NK) that returns C(NK) (the number of combinations of N objects taken K at a time) using the following recursive relations (N and K are integers, N > 0, 0 ≤ K ≤ N): C(N, 0) = C(NN) = 1,
C(NK) = C(N − 1, K) + C(N − 1, K − 1)    if 0 < K < N.Using the function Combin1, find the numbers C(NK) for a given integer N and five given integers K; output the value of each number and also the amount of the recursive function calls, which are required for its calculation.

ru Описать рекурсивную функцию Combin1(NK) целого типа, находящую C(NK) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: C(N, 0) = C(NN) = 1,
C(NK) = C(N − 1, K) + C(N − 1, K − 1)    при 0 < K < N.Параметры функции — целые числа; N > 0, 0 ≤ K ≤ N. Дано число N и пять различных значений K. Вывести числа C(NK) вместе с количеством рекурсивных вызовов функции Combin1, потребовавшихся для их нахождения.


Recur 7

en Write a recursive integer function Combin2(NK) that returns C(NK) (the number of combinations of N objects taken K at a time) using the following recursive relations (N and K are integers, N > 0, 0 ≤ K ≤ N): C(N, 0) = C(NN) = 1,
C(NK) = C(N − 1, K) + C(N − 1, K − 1)    if 0 < K < N.The integer N is assumed to be not greater than 20. Decrease the amount of recursive calls of the function Combin2 (in comparison with the Combin1 function from the task Recur6) by means of using an additional two-dimensional array of integers that should store the numbers C(NK) having been calculated. Using the Combin2 function, output the numbers C(NK) for a given integer N and five given integers K.

ru Описать рекурсивную функцию Combin2(NK) целого типа, находящую C(NK) — число сочетаний из N элементов по K — с помощью рекуррентного соотношения: C(N, 0) = C(NN) = 1,
C(NK) = C(N − 1, K) + C(N − 1, K − 1)    при 0 < K < N.Параметры функции — целые числа; N > 0, 0 ≤ K ≤ N. Считать, что параметр N не превосходит 20. Для уменьшения количества рекурсивных вызовов по сравнению с функцией Combin1 (см. задание Recur6) описать вспомогательный двумерный массив для хранения уже вычисленных чисел C(NK) и обращаться к нему при выполнении функции Combin2. С помощью функции Combin2 найти числа C(NK) для данного значения N и пяти различных значений K.


Recur 8

en Write a recursive real-valued function RootK(XKN) that returns an approximate value of a K-th root of X using the following formulas: Y0 = 1,        YN+1 = YN − (YN − X/(YN)K−1)/K,where X (> 0) is a real number, K (> 1), N (> 0) are integers, YN denotes RootK(XKN) for a fixed values of X and K. Using this function, output approximate values of a K-th root of X for a given X, K and six integers N.

ru Описать рекурсивную функцию RootK(XKN) вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y0 = 1,        YN+1 = YN − (YN − X/(YN)K−1)/K,где YN обозначает RootK(XKN) при фиксированных X и K. Параметры функции: X (> 0) — вещественное число, K (> 1) и N (> 0) — целые. С помощью функции RootK найти для данного числа X приближенные значения его корня K-й степени при шести данных значениях N.


Recur 9

en Write a recursive integer function GCD(AB) that returns the greatest common divisor of two positive integers A and B. Use the Euclidean algorithm: GCD(AB) = GCD(B, A mod B),    if B ≠ 0;        GCD(A, 0) = A,where "mod" denotes the operator of taking the remainder after integer division. Using this function, find the greatest common divisor for each of pairs (AB), (AC), (AD) provided that integers A, B, CD are given.

ru Описать рекурсивную функцию GCD(AB) целого типа, находящую наибольший общий делитель (НОД, greatest common divisor) двух целых положительных чисел A и B, используя алгоритм Евклида: НОД(AB) = НОД(B, A mod B),    B ≠ 0;        НОД(A, 0) = A,где «mod» обозначает операцию взятия остатка от деления. С помощью этой функции найти НОД(AB), НОД(AC), НОД(AD), если даны числа A, B, CD.


Recur 10

en Write a recursive integer function DigitSum(K) that returns the sum of digits of an integer K (the loop statements should not be used). Using this function, output the sum of digits for each of five given integers.

ru Описать рекурсивную функцию DigitSum(K) целого типа, которая находит сумму цифр целого числа K, не используя оператор цикла. С помощью этой функции найти суммы цифр для пяти данных целых чисел.


Recur 11

en Write a recursive integer function MaxElem(AN) that returns the maximal element of an array A of N integers (1 ≤ N ≤ 10; the loop statements should not be used). Using this function, output the maximal elements of three given arrays A, BC whose sizes are NA, NBNC respectively.

ru Описать рекурсивную функцию MaxElem(A, N) целого типа, которая находит максимальный элемент целочисленного массива A размера N (1 ≤ N ≤ 10), не используя оператор цикла. С помощью этой функции найти максимальные элементы массивов A, BC размера NA, NBNC соответственно.


Recur 12

en Write a recursive integer function DigitCount(S) that returns the amount of digit characters in a string S (the loop statements should not be used). Using this function, output the amount of digit characters for each of five given strings.

ru Описать рекурсивную функцию DigitCount(S) целого типа, которая находит количество цифр в строке S, не используя оператор цикла. С помощью этой функции найти количество цифр в каждой из пяти данных строк.


Recur 13

en Write a recursive logical function Palindrome(S) that returns true if a string S is a palindrome (i. e., it is read equally both from left to right and from right to left), and false otherwise; the loop statements should not be used. Output return values of this function for five given string parameters.

ru Описать рекурсивную функцию Palindrome(S) логического типа, возвращающую true, если строка S является палиндромом (т. е. читается одинаково слева направо и справа налево), и false в противном случае. Оператор цикла в теле функции не использовать. Вывести значения функции Palindrome для пяти данных строк.


Recur 14

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows:
<expression> ::= <digit> | <expression> + <digit> |
  <expression> − <digit>

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> ::= <цифра> | <выражение> + <цифра> |
  <выражение> − <цифра>


Recur 15

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows:
<expression> ::= <term> | <expression> + <term> |
  <expression> − <term>
<term> ::= <digit> | <term> * <digit>

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> ::= <терм> | <выражение> + <терм> |
  <выражение> − <терм>
<терм> ::= <цифра> | <терм> * <цифра>


Recur 16

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows:
<expression> ::= <term> | <expression> + <term> |
  <expression> − <term>
<term> ::= <element> | <term> * <element>
<element> ::= <digit> | (<expression>)

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> ::= <терм> | <выражение> + <терм> |
  <выражение> − <терм>
<терм> ::= <элемент> | <терм> * <элемент>
<элемент> ::= <цифра> | (<выражение>)


Recur 17

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows:
<expression> ::= <digit> |
  (<expression><operator><expression>)
<operator> ::= + | − | *

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом:
<выражение> ::= <цифра> |
  (<выражение><знак><выражение>)
<знак> ::= + | − | *


Recur 18

en A nonempty string S that represents an expression of integer type is given (see the expression definition in Recur17). Output true if the given expression is a correct one, otherwise output false.

ru Проверить правильность выражения, заданного в виде непустой строки S (выражение определяется по тем же правилам, что и в задании Recur17). Если выражение составлено правильно, то вывести true, иначе вывести false.


Recur 19

en A nonempty string S that represents an expression of integer type is given (see the expression definition in Recur17). Output 0 if the given expression is a correct one, otherwise output the order number of its first character that is invalid, superfluous or missing.

ru Проверить правильность выражения, заданного в виде непустой строки S (выражение определяется по тем же правилам, что и в задании Recur17). Если выражение составлено правильно, то вывести 0, в противном случае вывести номер первого ошибочного, лишнего или недостающего символа в строке S.


Recur 20

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows (functions M and m return their maximal and minimal argument respectively):
<expression> ::= <digit> | M(<expression> , <expression>) |
  m(<expression> , <expression>)

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом (функция M возвращает максимальный из своих параметров, а функция m — минимальный):
<выражение> ::= <цифра> | M(<выражение> , <выражение>) |
  m(<выражение> , <выражение>)


Recur 21

en Given a string S that represents a correct expression of logical type, output the value of this expression. The expression is defined as follows ("T" means true, "F" means false):
<expression> ::= T | F | And(<expression> , <expression>) |
  Or(<expression> , <expression>)

ru Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — true, «F» — false):
<выражение> ::= T | F | And(<выражение> , <выражение>) |
  Or(<выражение> , <выражение>)


Recur 22

en Given a string S that represents a correct expression of integer type, output the value of this expression. The expression is defined as follows (functions M and m return their maximal and minimal argument respectively):
<expression> ::= <digit> | M(<arguments>) | m(<arguments>)
<arguments> ::= <expression> | <expression> , <arguments>

ru Вывести значение целочисленного выражения, заданного в виде строки S. Выражение определяется следующим образом (функция M возвращает максимальный из своих параметров, а функция m — минимальный):
<выражение> ::= <цифра> | M(<параметры>) | m(<параметры>)
<параметры> ::= <выражение> | <выражение> , <параметры>


Recur 23

en Given a string S that represents a correct expression of logical type, output the value of this expression. The expression is defined as follows ("T" means true, "F" means false):
<expression> ::= T | F | And(<arguments>) | Or(<arguments>)
<arguments> ::= <expression> | <expression> , <arguments>

ru Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — true, «F» — false):
<выражение> ::= T | F | And(<параметры>) | Or(<параметры>)
<параметры> ::= <выражение> | <выражение> , <параметры>


Recur 24

en Given a string S that represents a correct expression of logical type, output the value of this expression. The expression is defined as follows ("T" means true, "F" means false):
<expression> ::= T | F | And(<arguments>) |
  Or(<arguments>) | Not(<expression>)
<arguments> ::= <expression> | <expression> , <arguments>

ru Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — true, «F» — false):
<выражение> ::= T | F | And(<параметры>) |
  Or(<параметры>) | Not(<выражение>)
<параметры> ::= <выражение> | <выражение> , <параметры>


Recur 25

en A tree of depth N is given. Each internal node of the tree has K (< 10) children that are numbered from 1 (the most left child) to K (the most right child). The number of the tree root is 0. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves. Paths must be ordered from the most left path ("011...1") to the most right path (for instance, "033...3" provided that K = 3); the last nodes of path must be changed faster than the first ones.

ru Дано дерево глубины N, каждая внутренняя вершина которого имеет K (< 10) непосредственных потомков (нумеруются от 1 до K). Корень дерева имеет номер 0. Записать в текстовый файл с данным именем все возможные пути, ведущие от корня к листьям. Перебирать пути, начиная с «самого левого» и заканчивая «самым правым» (при этом первыми заменять конечные элементы пути).


Recur 26

en A tree of depth N is given. Each internal node of the tree has K (< 10) children that are numbered from 1 (the most left child) to K (the most right child). The number of the tree root is 0. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves; each path must satisfy the following additional condition: adjacent nodes of the path have different numbers. The order of paths must be the same as in Recur25.

ru Дано дерево глубины N, каждая внутренняя вершина которого имеет K (< 10) непосредственных потомков (нумеруются от 1 до K). Корень дерева имеет номер 0. Записать в текстовый файл с данным именем все пути, ведущие от корня к листьям и удовлетворяющие следующему условию: никакие соседние элементы пути не нумеруются одной и той же цифрой. Порядок перебора путей такой же, как в задании Recur25.


Recur 27

en A tree of depth N is given (N is an even number). Each internal node of the tree has two children; the left child "A" with the weight 1 and the right child "B" with the weight −1. The tree root "C" has the weight 0. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves; each path must satisfy the following additional condition: the total weight of all path nodes is equal to 0. The order of paths must be the same as in Recur25.

ru Дано дерево глубины N (N — четное), каждая внутренняя вершина которого имеет 2 непосредственных потомка: A с весом 1 и B с весом −1. Корень дерева C имеет вес 0. Записать в текстовый файл с данным именем все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов пути равен 0. Порядок перебора путей такой же, как в задании Recur25.


Recur 28

en A tree of depth N is given; see the description of tree nodes in Recur27. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves; each path must satisfy the following additional condition: the total weight of any initial part of the path nodes is nonnegative. The order of paths must be the same as in Recur25.

ru Дано дерево глубины N того же типа, что и в задании Recur27. Записать в текстовый файл с данным именем все пути от корня к листьям, удовлетворяющие следующему условию: суммарный вес элементов для любого начального отрезка пути неотрицателен. Порядок перебора путей такой же, как в задании Recur25.


Recur 29

en A tree of depth N is given. Each internal node of the tree has three children; the left child "A" with the weight 1, the middle child "B" with the weight 0, the right child "C" with the weight −1. The tree root "D" has the weight 0. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves; each path must satisfy two additional conditions: the total weight of any initial part of the path nodes is nonnegative, and the total weight of all path nodes equals 0. The order of paths must be the same as in Recur25.

ru Дано дерево глубины N, каждая внутренняя вершина которого имеет 3 непосредственных потомка: A с весом 1, B с весом 0 и C с весом −1. Корень дерева D имеет вес 0. Записать в текстовый файл с данным именем все пути от корня к листьям, удовлетворяющие следующим условиям: суммарный вес элементов для любого начального отрезка пути неположителен, а суммарный вес всех элементов пути равен 0. Порядок перебора путей такой же, как в задании Recur25.


Recur 30

en A tree of depth N is given; see the description of tree nodes in Recur29. Create a text file (with a given name) whose lines contain paths from the root to all tree leaves; each path must satisfy two additional conditions: adjacent nodes of the path have different letters, and the total weight of all path nodes equals 0. The order of paths must be the same as in Recur25.

ru Дано дерево глубины N того же типа, что и в задании Recur29. Записать в текстовый файл с данным именем все пути от корня к листьям, удовлетворяющие следующим условиям: никакие соседние элементы пути не обозначаются одной и той же буквой, а суммарный вес всех элементов пути равен 0. Порядок перебора путей такой же, как в задании Recur25.