Jul. 20th, 2022
Crazy python
Jul. 20th, 2022 07:16 pmФункция выглядит как вычислимая примитивно-рекурсивная, но на самом деле невычислимая общерекурсивная!
Доказательство
def foo(i):
if i < 0 or i > 10:
return i
try:
print(f"{i} - 1")
return foo(i-1)
finally:
print(f"{i} + 1")
return foo(i+1)
print(foo(5))
На самом деле эта функция - чистое UB в питоне. После долгих лет рассказа о том, что в питоне нет UB.
Вот более интересный генератор последовательностей на той же базе.
def foo(i):
if i < 0 or i > 10:
return i
print(i, end='', sep='')
try:
return foo(i-1)
finally:
return foo(i+1)
print(foo(5))
Чем не генератор случайных чисел?