Rachunek lambda
Korzystając z funkcji
Y = (λf. (λx. f (x x)) (λx. f (x x)))
udowodnić, że (Y F) = (F (Y F)) oraz przekształcić funkcję rekurencyjną
SILNIA = (λn. IF (= n 0)
1
(* n (SILNIA (− n 1))))
do postaci anonimowej, w której nie odwołujemy się do nazwy "SILNIA".
| 1 − √5 | ||
r1 = | ||
| 2 |
| 1 + √5 | ||
r2 = | ||
| 2 |
| 1−√5 | 1+√5 | |||
Fn = α( | )n + β( | )n | ||
| 2 | 2 |
| 1−√5 | 1+√5 | |||
F1 = α( | )n + β( | )n, | ||
| 2 | 2 |
| 1−√5 | 1+√5 | |||
F1 = 1 ⇒ α( | )n + β( | )n = 1 | ||
| 2 | 2 |
| 1−√5 | 1+√5 | |||
−β( | ) + β( | ) = 1 | ||
| 2 | 2 |
| β | β√5 | β | β√5 | |||||
− | + | + | + | = 1 | ||||
| 2 | 2 | 2 | 2 |
| 2β√5 | |
= 1 | |
| 2 |
| √5 | ||
β = − | ||
| 5 |
| √5 | ||
α = | ||
| 5 |
| √5 | 1−√5 | √5 | 1+√5 | |||||
Fn = | ( | )n − | ( | )n | ||||
| 5 | 2 | 5 | 2 |
http://www.wolframalpha.com/input/?i=sqrt%285%29%2F5+*+%28+++%281%2Bsqrt%285%29%29%2F2++%29%5E10+-+sqrt%285%29%2F5*%28++++%281-sqrt%285%29+%29%2F2+++%29%5E10
tak chyba postac powinna wyglądać
a tu masz dla 100:
http://www.wolframalpha.com/input/?i=sqrt%285%29%2F5+*+%28+++%281%2Bsqrt%285%29%29%2F2++%29%5E100+-+sqrt%285%29%2F5*%28++++%281-sqrt%285%29+%29%2F2+++%29%5E100
a ktora forma obliczen zabiera więcej pamięci i czasu? rekurencyjna czy ta?
f(n) = 21, n = 8
|
|
|
| |||||||||||||||||||||||||||
= | = | |||||||||||||||||||||||||||||
|
|
|
|
| |||||||||||||||||||||||||||||||||||
= | n | = | n | ||||||||||||||||||||||||||||||||||||
to po co to się wyprowadza?
Wiem że liczenie prosto z definicji rekurencyjnej (bez spamiętywania) ma
| 1+√5 | ||
złożoność Θ(φn), gdzie φ = | . Taki tam zbieg okoliczności. W ogóle to | |
| 2 |