Практическая работа №9 рекурсия
Цель работы: научиться решать задачи с использованием рекурсивных функций и процедур.
Основные теоретические сведения:
Вызов функцией самой себя называется рекурсией, а сама функция называется рекурсивной. Рекурсивные функции являются мощным механизмом в программировании. Часто использование рекурсии приводит к ошибкам. Наиболее распространенная из таких ошибок – бесконечная рекурсия, когда цепочка вызовов функций никогда не завершается и продолжается, пока не кончится свободная память в компьютере.
Две наиболее распространенные причины для бесконечной рекурсии:
1. Неправильное оформление выхода из рекурсии. Например, если мы в программе вычисления факториала забудем поставить проверку if n == 0, то factorial(0) вызовет factorial(-1), тот вызовет factorial(-2) и т. д.
2. Рекурсивный вызов с неправильными параметрами. Например, если функция factorial(n) будет вызывать factorial(n), то также получится бесконечная цепочка.
1 Написать функцию, которая находит цифровой корень целого числа.
2 Найти сумму цифр заданного натурального числа.
3 Найти количество цифр в заданном натуральном числе.
4 Составить программу вычисления суммы четных факториалов. (n-четное, n£10)
5 Описать рекурсивную логическую функцию Simm(S,I,J), проверяющую, является ли симметричной часть строки S, начинающаяся i-м и заканчивающаяся j-м ее элементом.
6 Составить программу вычисления суммы нечетных факториалов. (n-четное, n£10)
|
|
7 Составить программу сортировки массива целых чисел.
8 Составить программу вычисления НОД двух натуральных чисел.
9 Составить программу нахождения числа, которое образуется из данного натурального числа при записи его цифр в обратном порядке. (173Þ371)
10 Составить программу перевода данного натурального числа в р-ичную систему счисления (2£р£9)
11 Дан прямоугольник со сторонами A и B, где А,В- натуральные числа. Начнем отсекать от него квадраты. Сколько квадратов можно отсечь, если каждый раз отсекается самый большой квадрат.
12 Поиска значений в упорядоченном списке.
13 Найти сумму 1/1+1/2+1/3+1/4+…+1/n, основываясь на рекурсии.(сумма k слагаемых равна сумме (k-1) слагаемых плюс k-е слагаемое).
14 Напишите главную программу для вычисления n-го числа Фибоначчи. Почему использовать рекурсивный алгоритм вычисления n-го числа Фибоначчи невыгодно?
15 Определите рекурсивно умножение как сложение и деление как вычитание и оформите алгоритмы в виде рекурсивных функций с вызовом из главных программ.
16 Составить программу сортировки массива целых чисел.
17 Составить программу вычисления НОД двух натуральных чисел.
Практическая работа Основные элементы управления
|
|
1. Напишите программу по следующему описанию. Есть класс "Воин". От него создаются два экземпляра-юнита. Каждому устанавливается здоровье в 100 очков. В случайном порядке они бьют друг друга. Тот, кто бьет, здоровья не теряет. У того, кого бьют, оно уменьшается на 20 очков от одного удара. После каждого удара надо выводить сообщение, какой юнит атаковал, и сколько у противника осталось здоровья. Как только у кого-то заканчивается ресурс здоровья, программа завершается сообщением о том, кто одержал победу.
2.
Дата добавления: 2020-11-15; просмотров: 456; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!