W obecnym kształcie fajna książka - daje duże value na temat takich mikrorefaktoringów. Dobry przykład odwracania zależności jest tam podany. Ogólnie polecam ;).
Pozdrawiam
Killavus
Wersja do druku
Cwicze aktualnie obsluge plikow w jezyku C i trafilem na problem. Mam zadanko, by wypisac statystyke pliku[ilosc slow, cyfr itd. - banal] w okienku dosowym, ale problem sie pojawia przy nazwie pliku. Jest sposob, by nie wpisywac tego recznie? A na internecie albo nic nie ma, albo wlasnie recznie wprowadzone. Nie chce tez robic tego z listy polecen. Przedstawie kawalek jak mniej wiecej to u mnie wyglada:
Zamiast nazwy pliku wyskakuje mi jakis dziwny znaczek[zawsze inny].Kod:#include <string.h>/<stdio.h>/<stdlib.h>
[...]
FILE *plik;
plik = fopen("tekst.txt", "r");
/*
caly program
*/
printf("Statystyka pliku: %s.\n", plik);
fclose(plik);
plik jest wskaźnikiem na typ FILE, a nie tablicą znaków, trzymaj nazwę w cstringu to będziesz ją miał
Da się jakos odpakowac plik spakowany scrackowanym VMProtectem?
ma ktos moze jakis dobry poradnik na temat rekurencji pod reka ?
żeby zrozumieć rekurencję musisz najpierw zrozumieć rekurencję
@szulak ; help plz
Smoku, poradnik nic nie da poza tym że ci powie, że w funkcji A() musisz tez wykonac funkcję A(). Trzeba zacząć to stosować żeby zrozumieć :D
Ciąg fibonacciego:
x5 = x4 + x3;
Więc:
Jedyne co jest pewne w rekurencji, ze gdzies jest if, ktory zwraca wartosc po prostu, a nie z funkcji, inaczej zawiesza sie system, bo funkcja musi wiedziec kiedy skonczyc, nie moze wywolywac sie sama bez przerwy.Kod:
function wynik_ciagu_fibonacciego(int indeks) {
if (indeks == 0) { return 0;}
else if (indeks == 1) { return 1;}
else { return wynik_ciagu_fibonacciego(indeks-1) + wynik_ciagu_fibonacciego(indeks-2); }
}
print(wynik_ciagu_fibonacciego(5)); // To daje wartosc piątego elementu z ciagu fibonacciego, bo dodaje czwarty (5-1) i trzeci (5-2) element do siebie, i zwraca wynik tego dodawania.
Prosciej na prawde sie nie da :D
Własnie przegladalem jakies randomowe poradniki z googla i tam nic nie ma :)
Nikt nie opisal ładnie jak to sie tam zwija ta funkcja, tylko kazdy w kolko pisal "funkcja w funckji".
No ok, jak to jedna z tych rzeczy ktora nie da sie łopatologicznie wytlumaczyc tylko trzeba nabyć nawyk, to zabieram sie do klepania kodu. :)
Ja sobie zawsze szukam definicji funkcji jak tu np: http://pl.wikipedia.org/wiki/Silnia
Załącznik 326595
a potem wedle tego tworzę funkcję.
Jest to zwykle przepisywanie definicji matematycznej na język programistycznyKod:int silnia(int n)
{
if(n==0)
return 1;
if(n>=1)
return n * silnia(n-1);
}
czy przy pisaniu funkcji rekurencyjnych da sie jakos zapisac wartosc podawana przez uzytkownika (argument fukncji), tak zeby mozna bylo jej uzywac w tej funkcji i zeby jej wartosc nie zmieniala sie przy kolejnych wywolywaniach w funkcji ?
Ale to jest zwykla funkcja, mozesz ja napisac jak chcesz, jedyne co odroznia rekurencyjna, od nie rekurencyjnej, to to ze sama siebie wykonuje. Wiec, mozesz wykorzystac np. parametr do tego :)
Nie wiem w czym piszesz, ale dam taki tip, ze byc moze przyda ci sie przeciazanie funkcji (lub parametr opcjonalny jesli piszesz w PHP) :)
nooo tak?
funkcja(x, y, z)
{
...
funkcja(x, y-5, z+88)
}
?
to moze na przykladzie:
Kod:
int f(int x){
int k=x; // i tu chcialbym zeby dla kazdego wywolania funkcji to k zawsze bylo rowne poczatkowemu, wprowadzonemu x
f(x-1);
}