Jaki będzie wynik działania funkcji? int Zagadka(int a, int b) { if (a==0) return b; else return Zagadka(a-1,b)+1; }
dominnio
Funkcja zadziała następująco: Jeśli a bezie równe zero, funkcja zwróci b, Jeśli a będzie większe od zera to funkcja będzie wywoływać samą siebie, aż do momentu gdy jej argumentami będzie (0,b), wtedy zwróci b i doda 1, potem zwróci b+1 i doda 1 i tak aż do wyjścia z rekurencji, kiedy to zwróci b + a*1. Jedynka zostanie dodana a razy bo tyle razy funkcja wywoła samą siebie. Czyli de facto funkcja zwróci sumę tych liczb.
Dla a mniejszego od zera program się nie skończy.
0 votes Thanks 0
RaspPi90
Int Zagadka(int a, int b) { if (a == 0) return b; else return Zagadka(a - 1, b) + 1; }
Jeśli a bezie równe zero, funkcja zwróci b,
Jeśli a będzie większe od zera to funkcja będzie wywoływać samą siebie, aż do momentu gdy jej argumentami będzie (0,b), wtedy zwróci b i doda 1, potem zwróci b+1 i doda 1 i tak aż do wyjścia z rekurencji, kiedy to zwróci b + a*1. Jedynka zostanie dodana a razy bo tyle razy funkcja wywoła samą siebie. Czyli de facto funkcja zwróci sumę tych liczb.
Dla a mniejszego od zera program się nie skończy.
{
if (a == 0)
return b;
else
return Zagadka(a - 1, b) + 1;
}
Zagadka(a = 5, b = 4):
return Zagadka(4, 4) + 1
Zagadka(a = 4, b = 4):
return Zagadka(3, 4) + 1
Zagadka(a = 3, b = 4):
return Zagadka(2, 4) + 1
Zagadka(a = 2, b = 4):
return Zagadka(1, 4) + 1
Zagadka(a = 1, b = 4):
return Zagadka(0, 4) + 1
Zagadka(a = 0, b = 4):
return b -> 4
return 4 + 1 -> 5
return 5 + 1 -> 6
return 6 + 1 -> 7
return 7 + 1 -> 8
return 8 + 1 -> 9
Zagadka(5, 4) -> 9
-----------------------------------------------------
Zagadka(a = 5, b = 3):
return Zagadka(4, 3) + 1
Zagadka(a = 4, b = 3):
return Zagadka(3, 3) + 1
Zagadka(a = 3, b = 3):
return Zagadka(2, 3) + 1
Zagadka(a = 2, b = 3):
return Zagadka(1, 3) + 1
Zagadka(a = 1, b = 3):
return Zagadka(0, 3) + 1
Zagadka(a = 0, b = 3):
return b -> 3
return 3 + 1 -> 4
return 4 + 1 -> 5
return 5 + 1 -> 6
return 6 + 1 -> 7
return 7 + 1 -> 8
Zagadka(5, 3) -> 8
Funkcja zwraca sumę argumentów.