Here is some exercises for programming practice.
Original post: link(russian)
Дано натуральное число number. Выведите все числа от 1 до number.
You were given a natural number ‘number’. Return a string with all numbers from 1 to 'number' using recursion. You can divide each digit by spaces or new lines.
Даны два целых числа number1 и number2. Выведите все числа от number1 до number2 включительно, в порядке возрастания, если number1 < number1, или в порядке убывания в противном случае.
You were given two numbers 'number1' and 'number2'. If 'number1' < 'number2', return a string with all numbers from 'number1' to 'number2' including them. Otherwise, return a string with all numbers from ‘number1’ to ‘number2’ in descending order.
В теории вычислимости важную роль играет функция Аккермана A(number1,number2), определенная следующим образом: link Даны два целых неотрицательных числа number1 и number2, каждое в отдельной строке. Выведите A(number1,number2).
You were given two integers 'number1' and 'number2'. Implement Ackermann function A(number1,number2) using recursion. https://wikimedia.org/api/rest_v1/media/math/render/svg/1a15ea2fcf1977e497bccdf1916ae23edc412fff
Дано натуральное число 'number'. Выведите true, если число 'number' является точной степенью двойки, или false в противном случае. Операцией возведения в степень пользоваться нельзя!
You were given a natural number 'number'. Write a function that returns true if 'number' is a power of two. You should not use the exponentiation operator!
Дано натуральное число number. Вычислите сумму его цифр. При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется).
You were given a natural 'number'. Calculate the sum of its digits. You should not use string, array or loops.
Дано натуральное число number. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.
You were given a natural number 'number'. Return all its digits one by one in reverse order separating them by spaces or new lines You should not use string, array or loops. Use only recursion and arithmetic operators.
Дано натуральное число number. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками. При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.
You were given a natural number 'number'. Return all its digits one by one in initial order separating them by spaces or new lines You should not use string, array or loops. Use only recursion and arithmetic operators.
Дано натуральное число number (number>1). Проверьте, является ли оно простым. Программа должна вывести true, если число простое и false, если число составное. Алгоритм должен иметь сложность O(log n). Указание: Понятно, что задача сама по себе нерекурсивна, т.к. проверка числа n на простоту никак не сводится к проверке на простоту меньших чисел. Поэтому нужно сделать еще один параметр рекурсии: делитель числа, и именно по этому параметру и делать рекурсию.
You were given a natural number 'number' (number > 1). Check if 'number' is a prime number or not. The function should return true, if 'number' is prime, and return false, if 'number' is not prime. The algorithm should have time complexity O(log n). Hint: you should add one argument to the function as a divisor.
Дано натуральное число number (number>1). Выведите все простые множители этого числа в порядке возрастания с учетом кратности. Алгоритм должен иметь сложность O(log n).
You were given a natural number 'number' (number > 1). Check if 'number' is a prime number or not. The function should return true, if 'number' is prime, and return false, if 'number' is not prime. The algorithm should have time complexity O(log n). Hint: you should add one argument to the function as a divisor.
Дано слово, состоящее только из строчных латинских букв. Проверьте, является ли это слово палиндромом. Выведите true или false. При решении этой задачи нельзя пользоваться циклами.
You were given a word consisting only of lowercase latin letters. Check if the word is a palindrome. The function should return true or false. You should not use loops.
Дана последовательность натуральных чисел (одно число в строке). Выведите все нечетные числа из этой последовательности, сохраняя их порядок. В этой задаче нельзя использовать глобальные переменные.
You were given a sequence of natural numbers (that should look like one number in a string). Return all odd numbers from this sequence keeping their initial order. You should not use global variables.
Дана последовательность натуральных чисел. Выведите первое, третье, пятое и т.д. из введенных чисел. В этой задаче нельзя использовать глобальные переменные
You were given a sequence of numbers. Return the first, third, fifth etc. numbers from the sequence. You should not use global variables.
Дана последовательность натуральных чисел. Определите наибольшее значение числа в этой последовательности.
You were given a sequence of - natural numbers. Return the biggest number from the sequence.
Дана последовательность натуральных чисел. Определите среднее значение элементов этой последовательности.
You were given a sequence of natural numbers. Return the average of the sequence elements.
Дана последовательность натуральных чисел. Определите значение второго по величине элемента в этой последовательности, то есть элемента, который будет наибольшим, если из последовательности удалить наибольший элемент.
You were given a sequence of natural numbers. Return the value of the second biggest number.
Дана последовательность натуральных чисел. Определите, какое количество элементов этой последовательности, равны ее наибольшему элементу.
You were given a sequence of natural numbers. Return the number of elements which are equal to the largest number in this sequence.
Дана последовательность натуральных чисел. Определите, сколько раз в этой последовательности встречается число 1.
You were given a sequence of natural numbers. Return the number of times “1” occurs in the sequence
Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4,... По данному натуральному n выведите первые n членов этой последовательности. Попробуйте обойтись только одним циклом for.
You were given a monotonic sequence in which every natural number 'k' occurs exactly k-times: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4,... Write a function that returns first n elements of this sequence by given a natural number n. Try to use no more than one loop.
Даны натуральные числа k и s. Определите, сколько существует k-значных натуральных чисел, сумма цифр которых равна d. Запись натурального числа не может начинаться с цифры 0. В этой задаче можно использовать цикл для перебора всех цифр, стоящих на какой-либо позиции.
You were given two natural numbers 'k' and 's'. Determine how many k-digit natural numbers exist, the sum of the digits of which is 'd'. A natural number can not begin with a digit 0. In this task, you can use a loop to iterate through all the digits at any position.
Даны числа a и b. Определите, сколько существует последовательностей из a нулей и b единиц, в которых никакие два нуля не стоят рядом.
You were given two numbers 'a' and 'b'. Determine how many sequences there are, from 'a' zeros and 'b' units, in which two zeros do not occur next to each other.
Дано число number, десятичная запись которого не содержит нулей. Получите число, записанное теми же цифрами, но в противоположном порядке. При решении этой задачи нельзя использовать циклы, строки, списки, массивы, разрешается только рекурсия и целочисленная арифметика.
You were given a number 'number'. Its decimal representation does not contain zeros. Return a number represented by the same digits but in reverse order. You should not use loops, string or array. Use only recursion and arithmetic operators.
Course code in lib/recursion.rb. Tests in rspec/recursion_spec.rb
bundle install;
rspec spec/
Bug reports and pull requests are welcome on GitHub at https://github.com/kopylovvlad/ruby_recursion_exercises. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
The gem is available as open source under the terms of the MIT License.
Everyone interacting in the Recursion project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.