0

私は Big O 記法を学ぼうとしていますが、この C++ コードで少し混乱しています:

void enterElements(int *s1, int s1Size)
{
    for(int x = 0;x < s1Size;++x)
    {
    retry:
        cout<<"Element "<<x + 1<<": ";
        cin>>s1[x];
        int valid = validation();
        if(valid == 1)
        {
            cout<<"The input must be numbers."<<endl;
            goto retry;
        }
    }
}

うまくやる方法がわからないので、3つの結果が得られました。

  1. 9n + 1 -> O(n)
  2. 7nm + 2m + 2n + 1 -> O(nm)
  3. 7n^2 + 4n + 1 -> O(n^2)

それらのどれかが正しいですか?そうでない場合は、正しい答えを見つけるのを手伝ってもらえますか?

int validation()
{
int validation = 0;
if(cin.fail())
{
    validation = 1;
    cin.clear();
    cin.ignore(std::numeric_limits<std::streamsize>::max(),'\n');
}
else
    validation = 0;
return validation;
}
4

3 に答える 3