matematykaszkolna.pl
. 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 emotka 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 emotka Może jutro dam rade
22 kwi 21:45
asdf: dam najwyżej taką odpowiedź jak Ty teraz emotka
22 kwi 21:45
Trivial: Hej! emotka Tutaj kod, który ładnie wypisze ile razy się wykonuje (z odpowiednim wcięciem) http://ideone.com/dgNNfT
22 kwi 22:29
asdf: Hej emotka 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 emotka no właśnie o to mi chodziło − " czym co jest " dzięki emotka
22 kwi 22:40
22 kwi 22:52
asdf: dzięki emotka 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 emotka
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
asdf: dla takich danych wejściowych działa emotka: http://ideone.com/4XpmDi da się to jakoś "sprytniej"?
23 kwi 00:04
Trivial: Kod nie działa. http://ideone.com/EL0Qv3
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
Trivial: No tak, odwrotnie podałem argumenty. poprawione: http://ideone.com/W5BFIW
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: emotka a no tak emotka dzięki bardzo, lece spać..trzeba odpocząć − jutro kolos i w środe kolejny kolos...(z matmy)emotka dobranoc emotka
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? emotka
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. emotka
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
asdf: http://ideone.com/ua2AkV @Dominik Wiem, ale nie mam na to czasu na razie..
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
asdf: https://matematykaszkolna.pl/forum/200639.html weź usuń albo zedytuj i dodaj kilka enterów na początku
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
asdf: http://ideone.com/2slIh9 takie cos "wygrzebalem"
23 kwi 21:32
Trivial: Gratulacje. W końcu działa. emotka 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: emotka a może emotka Dzieki bardzo, ja lece bo jutro kolos z analizy...emotka 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