Zadanie 3 ze zbioru maturalnego – obliczanie ilości mnożeń

Zmienna mn liczy mnożenia (przed return) – uwaga, k*k*k to dwa mnożenia!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
//Autor: Eryk Kucharski
using namespace std;

int mn = 0; //liczba mnozen - gwiazdki

int F(int x, int n)
{
        if (n == 1)
                return x;
       
        if (n % 3 == 0)
        {
                        int k = F(x, n / 3); //rekurencja (1)
                        mn += 2; //dwa mnożenia poniżej
                        return k * k * k;              
        }
       
        mn++; //jedno mnożenie poniżej
        return x * F(x, n - 1); //rekurencja (2)
}

int main()
{
        cout << F(3,4);
        cout << " mnozen: " << mn;
}