Wykaż całkowitą poprawność programu (tj. wykaż częściową poprawność oraz wskaż zbieżnik pętli uzasadniając, dlaczego program się zatrzymuje). Zaproponuj specyfikację. Oblicz liczbę wykonywanych przez funkcję operacji arytmetycznych o na tej podstawie oszacuj pesymistyczną (O-duże) złożoność obliczeniową.
int potega(int a, int b)
{
int i = 0;
int y = 1;
while(i != b)
{
y = y * a;
i = i + 1;
}
return y;
}
To tylko dobrze mi szacuje złożoność i nie wiem co zmienić żeby wszystko dobrze działało
include <iostream>
using namespace std;
int main()
{
int potega(int a, int b)
{
int i = 0;
int y = 1;
while(b - i > 0)
{
y = y * a;
i = i + 1;
}
return y;
}
}
// oszacowana złożoność O(n), (w tym przypadku O(b)), oraz zbieżnik
//niezmiennik i^y*y=a^b