Добавил:
omninoy
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ЛР-3 / lab3
.py #линейная
def linear(k): #поиск суммы цифр в числе
if k < 10:
return k
else:
return k % 10 + linear(k // 10)
print("линейная, сумма цифр в числе 112233:", linear(112233))
#повторная рекурсия
def repeated(a, b, k1): #деление нацело двух чисел
if a >= b:
return repeated(a - b, b, k1 + 1) #считаем, сколько раз можно осуществить операцию a-b
else:
return k1
print("повторная, деление нацело 13/3:", repeated(13, 3, 0))
#взаимная рекурсия
def mutual(b2):
if b2 == 0:
return "Чётное"
else:
return mutual2(b2 - 1)
def mutual2(b2):
if b2 == 0:
return "Нечётное"
else:
return mutual(b2 - 1)
print("взаимная, определение четности 3:",mutual(3))
#каскадная рекурсия
def cascade(n, m): #поиск количества сочетаний по формуле С=n!\((n-m)!*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 cascade(n - 1, m - 1) + cascade(n - 1, m)
print("каскадная, поиск количества сочетаний (4,2):",cascade(4, 2))
#удаленная рекурсия
def remote(n, m):
if n == 0:
return m + 1
if m == 0:
return remote(n - 1, 1)
if m != 0 and n != 0:
return remote(n - 1, remote(n, m - 1))
return 0
print("удаленная, функция Аккермана (2,1)", remote(2, 1))
#20 вариант
X = [1, 2, 3]
def calc_product(X, start, end):
if start == end:
i = start + 1
return X[start] - (X[start] ** 2) / (1 + i)
i = start + 1
current_val = X[start] - (X[start] ** 2) / (1 + i)
return current_val * calc_product(X, start + 1, end)
print(f"\n ")
print("вариант 20:", calc_product(X, 0, len(X) - 1))
def linear(k): #поиск суммы цифр в числе
if k < 10:
return k
else:
return k % 10 + linear(k // 10)
print("линейная, сумма цифр в числе 112233:", linear(112233))
#повторная рекурсия
def repeated(a, b, k1): #деление нацело двух чисел
if a >= b:
return repeated(a - b, b, k1 + 1) #считаем, сколько раз можно осуществить операцию a-b
else:
return k1
print("повторная, деление нацело 13/3:", repeated(13, 3, 0))
#взаимная рекурсия
def mutual(b2):
if b2 == 0:
return "Чётное"
else:
return mutual2(b2 - 1)
def mutual2(b2):
if b2 == 0:
return "Нечётное"
else:
return mutual(b2 - 1)
print("взаимная, определение четности 3:",mutual(3))
#каскадная рекурсия
def cascade(n, m): #поиск количества сочетаний по формуле С=n!\((n-m)!*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 cascade(n - 1, m - 1) + cascade(n - 1, m)
print("каскадная, поиск количества сочетаний (4,2):",cascade(4, 2))
#удаленная рекурсия
def remote(n, m):
if n == 0:
return m + 1
if m == 0:
return remote(n - 1, 1)
if m != 0 and n != 0:
return remote(n - 1, remote(n, m - 1))
return 0
print("удаленная, функция Аккермана (2,1)", remote(2, 1))
#20 вариант
X = [1, 2, 3]
def calc_product(X, start, end):
if start == end:
i = start + 1
return X[start] - (X[start] ** 2) / (1 + i)
i = start + 1
current_val = X[start] - (X[start] ** 2) / (1 + i)
return current_val * calc_product(X, start + 1, end)
print(f"\n ")
print("вариант 20:", calc_product(X, 0, len(X) - 1))
