Изменения

Перейти к: навигация, поиск

Теорема о рекурсии

14 байт убрано, 19:18, 4 сентября 2022
м
rollbackEdits.php mass rollback
'''string''' getSrc():
'''string''' src = getOtherSrc()
'''return''' ```$src <font color="green">// символ $ перед названием переменной используется для подстановки значения этой переменной в строку</font>
<nowiki>|</nowiki>string getOtherSrc(): <font color="green">// многострочные строки заключаются в ``` и используют <nowiki>|</nowiki> в качестве разделителя</font>
<nowiki>|</nowiki> return $src```
Иначе говоря, если рассмотреть <tex>V(x, y)</tex>, как программу, использующую <tex>x</tex> в качестве исходного кода и выполняющую действие над <tex>y</tex>, то теорема о рекурсии показывает, что мы можем написать эквивалентную ей программу <tex>p(y) = V(p, y)</tex>, которая будет использовать собственный исходный код.
Приведем так же альтернативую альтернативную формулировку теоремы и альтернативное (неконструктивное) доказательство.
==Теорема о неподвижной точке==
По [[Теорема о рекурсии | теореме о рекурсии]], программа может знать свой исходный код. Значит, в неё можно написать функцию <tex> \mathrm{getSrc()} </tex>, которая вернёт строку {{---}} исходный код программы.
Напишем такую программу:
<code>
<tex>p(q){:}</tex>
'''if''' <tex>p. \mathrm{getSrc()}</tex> == <tex>q. \mathrm{getSrc()}</tex>
'''return''' 1
'''else'''
'''while''' ''true''
</code>
Программа <tex> p </tex> знает свой код, что то же самое, что и знает свой номер. Как видно из её кода, она допускает только одно число {{---}} свой номер.
}}
1632
правки

Навигация