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 05:46 pm (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Так, а вот продолжать рекурсию при получении KeyboardInterrupt — это подстава.

Date: 2022-07-21 07:27 am (UTC)
yurikhan: (Default)
From: [personal profile] yurikhan

Это для тех, у кого нет соседней вкладки с htop’ом :P

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 25th, 2026 02:21 pm
Powered by Dreamwidth Studios