amarao: (Default)
[personal profile] amarao

Функция выглядит как вычислимая примитивно-рекурсивная, но на самом деле невычислимая общерекурсивная!

Доказательство

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))

Чем не генератор случайных чисел?

Date: 2022-07-20 04:52 pm (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi

What's ub?

Profile

amarao: (Default)
amarao

April 2026

S M T W T F S
   1234
567 891011
12131415161718
19202122232425
2627282930  

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 13th, 2026 08:38 am
Powered by Dreamwidth Studios