Zadanie na egzamin C++, funkcja rekurencyjna

0

Proszę o pomoc, mam coś takiego:

 	int WyrazCiagu(int n)
{
	int a;
if (n==0) return 40;
else
return (n>0)?(WyrazCiagu(n-1)+(WyrazCiagu(-1,n-1)*(n*n)%45));
}

ale na 100% jest coś nie tak, wiem że nie uwzględniłem wartości bezwzględnej

0
int WyrazCiagu(int n)
{

	if (n==0) return 40;
	if (n>0)
		return ( (int)(abs( WyrazCiagu(n-1) + pow(-1,n)*(n*n) )) % 45  );
}

Coś takiego?

i: 0 WyrazCiagu(i): 40
i: 1 WyrazCiagu(i): 39
i: 2 WyrazCiagu(i): 43
i: 3 WyrazCiagu(i): 34
i: 4 WyrazCiagu(i): 5
i: 5 WyrazCiagu(i): 20
i: 6 WyrazCiagu(i): 11
i: 7 WyrazCiagu(i): 38
i: 8 WyrazCiagu(i): 12
i: 9 WyrazCiagu(i): 24
i: 10 WyrazCiagu(i): 34
i: 11 WyrazCiagu(i): 42
i: 12 WyrazCiagu(i): 6
i: 13 WyrazCiagu(i): 28
i: 14 WyrazCiagu(i): 44
i: 15 WyrazCiagu(i): 1
i: 16 WyrazCiagu(i): 32
i: 17 WyrazCiagu(i): 32
i: 18 WyrazCiagu(i): 41
i: 19 WyrazCiagu(i): 5
i: 20 WyrazCiagu(i): 0
i: 21 WyrazCiagu(i): 36
i: 22 WyrazCiagu(i): 25
i: 23 WyrazCiagu(i): 9
i: 24 WyrazCiagu(i): 0
i: 25 WyrazCiagu(i): 40
0
abs 

też jest w math.h ? Mam nadzieje że prowadzący nie doczepi się tego że pójdę na "łatwiznę"

 return ( (int)

Mógłbyś tylko wyjaśnić do czego służy ten (int) ? :)

Wielkie dzięki za szybką odpowiedź, poprawka jest jutro :)

0

Rzutowanie, wyrażenia obok.

Jak masz np.

(int)(15.6);

To wartość całego wyrażenia wyniesie 15.

0

aaaa... tego mi brakowało :) Wielkie dzięki!

1
Jadeszek napisał(a)
return ( (int)(abs( WyrazCiagu(n-1) + pow(-1,n)*(n*n) )) % 45  );

Jak juz piszemy w c++ to lepiej uzyc static_cast<int>

1 użytkowników online, w tym zalogowanych: 0, gości: 1