.
asdf: prosta rekurencja:
mam funkcję:
silniarek(n), np. n = 3;
silniarek(3) 3*silniarek(2),
silniarek(2) = 2*silniarek(1)
silniarek(1) = 1
I teraz pytanie:
ile razy funkcja w tym przypadku się wywołała? 3 razy czy 3 * 2? (pobieranie wartości później
też się liczy jako wywołanie funkcji?)
22 kwi 21:16
Basia:
albo Ty coś knocisz, albo ja nie rozumiem
funkction silniarek(n)
begin
..........................
.........................
end
między begin a end nie możesz przecież jej samej wywoływać
22 kwi 21:34
asdf: no to "ile razy ona się sama wywołuje" i z jakimi parametrami

wlasnie wziąłem prosty przykład:
if n==0 { return 1; } else { return n*silnia(n−1); }
dla n = 3:
silnia(3) = 3*silnia(2)
silnia(2) = 2*silnia(1)
silnia(1) = 1*silnia(0)
silnia(0) = 1
i pytanie te co wyzej
22 kwi 21:38
Basia:
wg mnie 5 razy; ale głowy nie dam
22 kwi 21:43
asdf: ok, dzieki

Może jutro dam rade
22 kwi 21:45
asdf: dam najwyżej taką odpowiedź jak Ty teraz
22 kwi 21:45
22 kwi 22:29
asdf: Hej

Dzięki, czyli dla tego przypadku wywołań będzie 2n +1?
22 kwi 22:31
Trivial: n+1
22 kwi 22:32
asdf: dla silnia(2):
silnia(2) = 2*silnia(1)
silnia(1) = 1*silnia(0)
−−−−−−−−−−−
silnia(0) = 1
−−−−−−−−−−−
silnia(1) = 1* 1
silnia(2) = 2* 1

?
22 kwi 22:34
Trivial: Te ostatnie to przecież nie wywołania, tylko 'zwijanie'. Jako wywołanie policz tylko ile jest
zmiany wcięć w prawo.
22 kwi 22:35
asdf: aha

no właśnie o to mi chodziło − " czym co jest " dzięki
22 kwi 22:40
22 kwi 22:52
asdf: dzięki

Już jako tako zrozumiałem rekurencje (toż to niespodzianka..

). Teraz mam taki
problem:
napisać szukanie binarne rekurencyjnie:
http://ideone.com/gJxV8B
to będzie takie coś?
22 kwi 22:59
asdf: oczywiście w dwóch ostatnich ifach zapomniałem dać return
22 kwi 23:00
Agata: Co to jest to wszystko?

Mam pytanie czy wystarczy sie uczyć z przedmiotów maturalnych matma fizyka ang informatyka
polski? Czy trzeba ogólnie sie uczyć proszę o odpowiedz
22 kwi 23:01
asdf: o co Ci chodzi?

do czego? do matury, studia?
22 kwi 23:04
asdf: zapomniałem chyba dać warunku, gdy L == R, wtedy:
if( L == R && A[L] != X){
return −1;
}
22 kwi 23:06
Trivial:
asdf, za dużo tych ifów, a dwa ostatnie są na odwrót. Za chwilkę pomyślę.
22 kwi 23:11
asdf: już poprawiam
22 kwi 23:13
22 kwi 23:26
asdf: Na przykład mam taką tablice:
1 2 3 4 5 6
3 6 9 80 300 401
wywołane są takie funkcje (szukam w przedziale 1, 6 ⇒ L = 1; R = 6)?:
szukrek(A[], 300, 1, 6) ⇒
szukrek(A[], 300, 3, 6) ⇒
szukrek(A[], 300, 4, 6) ⇒
szukrek(A[], 300, 5, 6) ⇒ return 5;
Zapomniałem na początku dać warunków if(A[L] > X || A[R] < X) { return −1; }
oraz dla zaokrąglenia się w górę:
if (A[R] == X) { return R; }
22 kwi 23:34
Trivial:
Napisz ten kod porządnie (niech działa na intach). Ja w tym czasie dopiszę generator testów i
zobaczymy czy działa.
22 kwi 23:48
23 kwi 00:04
23 kwi 00:20
Trivial:
x − to, czego szukamy
k − twój index
l − indeks szukania liniowego
[...] − zawartość tablicy losowej
23 kwi 00:23
asdf: Twoja tablica jest posortowana?
23 kwi 00:28
asdf: rosnąco?
ale też dziwny myk:
http://ideone.com/z35qh1
ten kompilator dobrze kompiluje, w devC++ wywala mi A[4] = 2293652
23 kwi 00:35
asdf: kod z deva:
L = 0 R = 9
L = 0 R = 4
L = 2 R = 4
L = 3 R = 4
jestem tu, powinno wywalic blad;
L = 0 R = 6
L = 3 R = 6
liczba jest w A[4] = 2293652
..
23 kwi 00:36
23 kwi 00:38
asdf: testowałem dla różnych danych wejściowych posortowanych rosnąco − jeszcze nie wywaliło złego
wyniku
23 kwi 01:03
Trivial: Napisałem swoją własną funkcję i ona test przechodzi.
http://ideone.com/upz4Ed
U Ciebie dopisałem przypadek r = −1, gdyż nie testujesz przypadku listy pustej.
23 kwi 01:21
asdf: 
a no tak

dzięki bardzo, lece spać..trzeba odpocząć − jutro kolos i w środe kolejny
kolos...(z matmy)

dobranoc
23 kwi 01:40
Agata: Trzymaj sie <3
A tak w ogóle to o czym pisaliscie ?
23 kwi 16:32
asdf: jakos się udało, a kto Ty?
23 kwi 16:54
Trivial: asdf, poprawiłeś tę funkcję?
23 kwi 18:04
asdf: moją?
23 kwi 19:43
Trivial: Tak...
23 kwi 20:36
asdf: przypadek listy pustej:
if( L >= (R−1) && A[L] != X){ (...)
to chyba wystarczy.
a co do reszty − nie wiem co poprawiać − smiga dobrze.
23 kwi 20:40
Dominik: asdf, uzywasz dev−c++?
23 kwi 20:40
asdf: a tak nawiasem − dosłownie to samo miałem na kolosie

nie wiem jak mi sie udało trafić na
taki przykład − ale w koncu glupi ma szczescie

..na lekcjach tego nie przerabialismy, zbioru
zadan tez nie bylo − a mi sie udalo na to trafić
23 kwi 20:41
asdf: @Dominik
tak uzywam deva, ale chyba niedlugo pobiore na licencje studencką visual studio..jak na razie
nie mam na to czasu
23 kwi 20:42
Trivial: adsf, ale Twoja funkcja nie przechodzi mojego testu.
23 kwi 20:46
asdf: przy jakim warunku nie dziala poprawnie?
23 kwi 20:49
Trivial: Zaraz zerknę.
23 kwi 20:50
Trivial: Daj mi najnowszą wersję.
23 kwi 20:51
Dominik: sciagnij cos nowszego, bo dev−c++ nie jest aktualizowane od bodaj 2005 roku. przykladowo
code::blocks − calkiem niezle IDE korzystajace z mingw. no albo visual studio, jesli masz
dostep z uczelni.
23 kwi 20:55
23 kwi 20:58
Trivial:
Funkcja nie działa dla listy pustej. Po dodaniu if (R < L) { return −1; } na początku, funkcja
nie działa dla listy [1] przy wyszukiwaniu 0.
23 kwi 21:09
23 kwi 21:10
asdf: if( L ==(R−1) || L=R=0) { ...return 0; }?
23 kwi 21:13
Trivial: Kolejne warunki?

ok. sprawdzę...
Niestety bez zmian.
23 kwi 21:15
Trivial: A jeśli chodzi o ten dziwny temat to nie mogę edytować i nie wiem czy mam usunąć czy nie.
23 kwi 21:16
23 kwi 21:32
Trivial: Gratulacje. W końcu działa.

Przeszło 5000 losowych testów.
23 kwi 21:37
asdf: dziwne, zamiast od razu dając (L+R)/2 dalem po prostu zmienną srodek = (L+R)/2
..
23 kwi 21:39
Trivial: Nie tylko. Usunąłeś ten przypadek z return 0.
23 kwi 21:42
asdf: 
a może

Dzieki bardzo, ja lece bo jutro kolos z analizy...

hej
23 kwi 21:44
asdf: a jeszcze takie pytanie, jak mam:
3*silnia(2)
2*silnia(1)
1*silnia(0)
to return 1 też jest wywołaniem funkcji czy to juz sie pod to nie liczy?
23 kwi 21:47
Trivial: Wywołania funkcji są wtedy gdy je wywołujesz...
void przyklad(void) {
a();
b(3);
c();
return 1;
}
funkcja przykład wywołuje funkcje a,b,c (każdą po jeden raz).
23 kwi 21:51