Mam takie pytanko , dlaczego na początku programu if(!a) wyswietla printf , a a program mimo tego dalej działa ?
#include <stdio.h>
void Funkcja(int a,const int *b)
{
if (!a)
{
printf("%d ", b[0]);
return;
}
int *c = b;
if (a%4 == 0)
{
printf("%d %d ", b[0], b[1]);
c+=2;
}
Funkcja(a/2, c);
printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}
- Rejestracja:ponad 9 lat
- Ostatnio:12 miesięcy
- Postów:32

- Rejestracja:około 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Bzdury gadasz, wyświetla sie ten drugi printf a nie pierwszy bo warunek nie jest spełniony. Negacja czegoś co nie jest 0 daje 0.
- Rejestracja:ponad 9 lat
- Ostatnio:12 miesięcy
- Postów:32
void Funkcja(int a,const int *b)
{
if (!a)
{
printf("Jeżeli if z negacja sie odpali to wyswietli się : %d ", b[0]);
return;
}
int *c = b;
if (a%4 == 0)
{
printf("%d %d ", b[0], b[1]);
c+=2;
}
Funkcja(a/2, c);
printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}
Sprawdz sobie

- Rejestracja:około 21 lat
- Ostatnio:około 3 lata
- Lokalizacja:Space: the final frontier
- Postów:26433
Generalnie słabo mi. A rozumiesz ty że masz tam rekurencje? o_O Pierwszy if w pierwszym wywołaniu tej funkcji sie nie wykona. Może to ci pomoże:
#include <stdio.h>
void Funkcja(int a,const int *b)
{
printf("Zeby zrozumiec rekurencje musisz zrozumiec rekurencje\n");
if (!a)
{
printf("Jeżeli if z negacja sie odpali to wyswietli się : %d ", b[0]);
return;
}
int *c = b;
if (a%4 == 0)
{
printf("%d %d ", b[0], b[1]);
c+=2;
}
Funkcja(a/2, c);
printf("%d", b[a%4]);
}
int tab[] = {1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}

- Rejestracja:ponad 19 lat
- Ostatnio:4 dni
Może taka modyfikacja przekona ciebie że nie jest tak jak myślisz: http://ideone.com/JTxLV4
#include <stdio.h>
void Funkcja(int a,const int *b)
{
if(!a)
{
printf("%d ",b[0]);
return;
}
else printf("*");
int *c=b;
if(a%4==0)
{
printf("{%d %d} ",b[0],b[1]);
c+=2;
}
Funkcja(a/2,c);
printf("%d",b[a%4]);
}
int tab[]={1, 3, 5, 7};
int main()
{
Funkcja(13,tab);
return 0;
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.