Практическая работа №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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!