
Болтушкин Л.С., группа 712-2, лабораторная 3.docx
.pdfПриложение В
(обязательное)
# 3 - Взаимная рекурсия
def mutual_recursion_1(b2): if b2 == 0:
return "Четное число" else:
return mutual_recursion_2(b2 - 1)
def mutual_recursion_2(b2): if b2 == 0:
return "Нечетное число" else:
return mutual_recursion_1(b2 - 1)
print("Взаимная рекурсия:") n = int(input("Номер: "))
result = mutual_recursion_1(n) print(result)
print("\n")
11
Приложение Г
(обязательное)
# 4 - Каскадная рекурсия
def cascading_recursion(n, m):
if ((m == 0) and (n > 0)) or ((m == n) and (n > 0)): return 1
elif (m > n) and (n >= 0): return 0
else:
return cascading_recursion(n - 1, m - 1) + cascading_recursion(n - 1,
m)
print("Каскадная рекурсия:") m = int(input("Номер: "))
result = cascading_recursion(m, m) print(result)
print("\n")
12
Приложение Д
(обязательное)
# 5 - Удаленная рекурсия def far_recursion(n, m):
if n == 0: return m + 1
if m == 0:
return far_recursion(n - 1, 1) if m != 0 and n != 0:
return far_recursion(n - 1, far_recursion(n, m - 1)) return 0
print("Удаленная рекурсия:") n = int(input("Номер 1: ")) m = int(input("Номер 2: ")) result = far_recursion(n, m) print("Результат:", result) print("\n")
13
Приложение Е
(обязательное)
# 6 - Индивидуальное задание import math
def count_negative_sine_elements(X): if len(X) == 1:
return int(math.sin(X[0] / 2) < 0) else:
mid = len(X) // 2 + len(X) % 2 left_half = X[:mid]
right_half = X[mid:]
return count_negative_sine_elements(left_half) + count_negative_sine_elements(right_half)
X_example = [1.76405235, 0.40015721, 0.97873798, 2.2408932, 1.86755799, - 0.97727788, 0.95008842, -0.15135721]
count_result = count_negative_sine_elements(X_example) print("Индивидуальное задание:")
print("Результат", X_example, count_result)
14