• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zamiana funkcji iteracyjnej na rekurencyjną

0 głosów
87 wizyt
pytanie zadane 9 lutego w C i C++ przez krisu Nowicjusz (160 p.)

Witam, mam problem z zadaniem.

Zamień poniższą funkcje iteracyjna na rekurencyjną:

 

int fun (int a, int b)
{
int result = 1;

for (int i = 0; i < b; i++)
{
result *= a;
}
return result
}

Mógłby ktoś mi pomóc?

3 odpowiedzi

+1 głos
odpowiedź 10 lutego przez Criss Mędrzec (161,360 p.)
int fun(int a, int b) {
    if (!b) return 1;
    if (b==1) return a;
    return pow_x(a*a, b-1);
}

 

+1 głos
odpowiedź 10 lutego przez mokrowski Szeryf (97,680 p.)
int pow_x_y(int x, int y) {
    return y == 0 ? 1: x * pow_x_y(x, --y);
}

Ogólnie w tej postaci (tak jak i w pierwotnej), funkcja źle oblicza wartości dla danych mniejszych od zera. Ale to już zarzut bardziej do formy zadania.

–1 głos
odpowiedź 9 lutego przez Chess Maniak (59,210 p.)

Ze zmiennymi globalnymi pewnie sobie jakoś poradzisz i zmodyfikujesz kod:

int result = 1;
int iter = 0;
	
int pow_x(int a, int b) {

	if(iter < b) {
		iter++;
		result *= a;
		pow_x(a, b);
	}
	
	return result;	
}

Podobne pytania

0 głosów
1 odpowiedź 115 wizyt
0 głosów
1 odpowiedź 54 wizyt
pytanie zadane 28 maja 2018 w C i C++ przez TenNowy Nowicjusz (210 p.)
0 głosów
0 odpowiedzi 89 wizyt
pytanie zadane 6 maja 2017 w C i C++ przez Barteck125 Obywatel (1,140 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

60,245 zapytań

105,929 odpowiedzi

220,065 komentarzy

32,445 pasjonatów

Przeglądających: 160
Pasjonatów: 1 Gości: 159

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...