Задача на рекурсию, нужно переписать как итерация C++

Есть задачка на C++, нужно решить рекурсивным способом и через итерацию. введите сюда описание изображения

С рекурсией вроде справился, но вот итерацию никак немогу написать. N і M - целые числа, результат тоже целое число. Буду очень благодарен за любую помощь. Вот код, которий написал(но он не роботает, пока не могу понять в чем проблема)

#include <iostream>

using namespace std;

double ReactangleArea(double, double);

int main()
{
    double UserSideN, UserSideM;

    cout << "Enter n, m: " << endl;
    cin >> UserSideN >> UserSideM;

    cout << "Result: " << ReactangleArea(UserSideN, UserSideM) << endl;

    return 0;
}

double ReactangleArea(double UserSideN, double UserSideM)
{
    double result = 0;

    while(UserSideM != 0 && UserSideM != 0)
    {
        if(UserSideN == 1 && UserSideM == 1)
            result = 1;
        else if(UserSideN > 1)
        {
            UserSideN --;
            result++;
        }
        else if(UserSideM > 1)
        {
            UserSideM --;
            result++;
        }
        else
            break;
    }

    return result;
}

В моем коде результат не выводиться, был бы также очень рад если б мне подсказали в чем тут ошибка)


Ответы (2 шт):

Автор решения: Zhihar

во-первых лучше все таки считать через int, а то на double есть шансы вообще условие x == 1 не получить (из-за потери точности)

да и формула все таки целочисленная вроде как

во-вторых попробуйте начать двигаться от local_n = 1, local_m = 1

  1. сначала идете до тех пор, пока local_n <= n

  2. потом идёте до тех пор, пока local_m <= m

код:

int S(const int n, const int m)
{
    int res = 1;

    for (int local_n = 2; local_n <= n; local_n++)
    {
        res = res + 1;
    }

    for (int local_m = 2; local_m <= m; local_m++)
    {
        res = res + 1;
    }

    return res;
}
→ Ссылка
Автор решения: Harry

А проще нельзя? :)

int S(int n, int m) { return n + m - 1; }
→ Ссылка