<?php
function fibonacci($count, $f1=0, $f2=1) {
if ($count < 1) return 0;
$return = $count >1 ? fibonacci($count -1, $f2, $f1 + $f2) : $f2;
return $return;
}
echo fibonacci(19);
?>
Trzeba uważać żeby nie przesadzić z liczbą. Można dopisać if ($count > 10000) return null;.
Analizować raczej nie trzeba. Jeżeli $count jest większy niż 1 wywołaj funkcję i licz dalej zwróć ostatni wynik.
Można to zrobić w pętli for, ale to wydaje mi się bardziej proste i przejrzyste i pozwala myśleć obiektowo.
Powodzenia.
Postaram się przekazać swoje doświadczenia z PHP, oraz innych dziwnych rzeczach, typu MySQL, DB2. Czyli to co umiem. Blogoczytelników o słabych nerwach proszę o nieczytanie tego blogu. Dlaczego? Jeszcze nie wiem. W razie pytań z dziedziny PHP proszę pytać, jest cień możliwości że akurat to wiem. ;)
Pokazywanie postów oznaczonych etykietą obiekty. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą obiekty. Pokaż wszystkie posty
wtorek, 7 lipca 2015
Funkcja obliczające ciąg Fibonacciego
Witam.
Natchniony jakimś blogiem przedstawiam prostą punkcje obliczający ciąg Fibonacciego.
piątek, 16 marca 2012
Programowanie obiektowe w PHP. (cz. 2)
Trzeba oderwać się od Javy i napisać coś o języku który lubię.
Dobra. Udało zmienić się w template tytuł, na laurach nie ma co spoczywać. Trzeba zrobić coś bardziej zaawansowanego. Choćby w DIV dodać jakiś tekst, albo coś większego.
Mamy bardzo skomplikowaną stronę:
Otóż to jest dorzeczność. Ponieważ wartość HTML'a, XHTML'a XML'a i innego podobnego składem ela nie może mieć znaków specjalnych. Sprytny DOM żeby nie mieć problemów konwertuje znaki specjalne. Więc żeby dodać STRONG należy się ciut bardziej wysilić.
A oto wysiłek przekraczający ludzkie pojęcie:
W następnej części popastwię się nad tabelą jak ją zmajstrować i po co. ;)
Obiecuję napisać to trochę szybciej niż za pół roku. :D
Mamy bardzo skomplikowaną stronę:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Obiektowe herezje</title>
</head>
<body>
<h1>To jest strona z tytułem</h1>
<div id="diwek"></div>
</body>
<html>
Z góry przepraszam jak w HTML'u jakimś pożrę w napadzie szału jakiś tag. Muszę go konwertować na coś wyświetlanego przez serwis, a z konwersjami różnie bywa.
Ale do rzeczy. Mamy DIV, który ma swój ID. Po pierwsze przydaje się taki wynalazek, żeby grafik mógł się na pastwić w CSS'ach na konkretnym DIV, a dla nas przyda się co by mieć pewność że chodzi nam o dokładnie ten DIV a nie jakiś inny. W HTML/XHTML obowiązuje teza nieśmiertelnego „There can be only one!” i bardzo dobrze.
Wrzucić tam jakiś tekst jest dość prosto. Oto i przykład:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Obiektowe herezje</title>
</head>
<body>
<h1>To jest strona z tytułem</h1>
<div id="diwek"></div>
</body>
<html>
<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$div->nodeValue = "Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.";
echo $dom->saveHTML();
?>
Już. Działa. Gorzej jak w napadzie szału zachce się naw wstawić coś takiego:
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$div->nodeValue = "Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.";
echo $dom->saveHTML();
?>
<strong>Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.</strong>
Wyświetli się nam coś takiego:
<strong>Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.</strong>
No jak śmiało!!! To jakaś niedorzeczność!Otóż to jest dorzeczność. Ponieważ wartość HTML'a, XHTML'a XML'a i innego podobnego składem ela nie może mieć znaków specjalnych. Sprytny DOM żeby nie mieć problemów konwertuje znaki specjalne. Więc żeby dodać STRONG należy się ciut bardziej wysilić.
A oto wysiłek przekraczający ludzkie pojęcie:
<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$strong = $dom->createElement('strong', 'Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.');
$div->appendChild($strong);
echo $dom->saveHTML();
?>
Ale... zawsze musi być jakieś ale. Ale załóżmy że z jakiś powodów element STRONG musimy wstawić teraz, a wartość gdzieś tam daleko daleko. Żaden problem.$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$strong = $dom->createElement('strong', 'Tu nastąpi wstawienie światłego tekstu, który oświeci ciemności, o ile nie wyłączyli prądu.');
$div->appendChild($strong);
echo $dom->saveHTML();
?>
<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$strong = $dom->createElement('strong');
$do_daleko = $div->appendChild($strong);
// załóżmy że tu jest dużo kodu PHP, który jest niezbędny do funkcjonowania.
// bla bla bla
// i jeszcze jedna linijka dla lepszego samopoczucia!
$do_daleko->nodeValue = "A jednak wstawiłem!";
echo $dom->saveHTML();
?>
CUD! DZIAŁA!$dom = new DOMDocument('1.0', 'UTF-8');
$dom->validateOnParse = TRUE;
$dom->loadHTMLFile("blog.html");
$div = $dom->getElementById('diwek');
$strong = $dom->createElement('strong');
$do_daleko = $div->appendChild($strong);
// załóżmy że tu jest dużo kodu PHP, który jest niezbędny do funkcjonowania.
// bla bla bla
// i jeszcze jedna linijka dla lepszego samopoczucia!
$do_daleko->nodeValue = "A jednak wstawiłem!";
echo $dom->saveHTML();
?>
W następnej części popastwię się nad tabelą jak ją zmajstrować i po co. ;)
Obiecuję napisać to trochę szybciej niż za pół roku. :D
Subskrybuj:
Posty (Atom)