temchik_ggg Ответов: 2

Как я могу создать conastant параметр в функции C++?


Я пытаюсь переписать алгоритм Python на C++, и он работает неправильно.
Я думаю, что проблема в том, что я не могу правильно переписать функцию в C++. Как записать константу в функцию (в Python это параметр "start") или ошибку в другую функцию?
На Python 3:

алгоритм def(n, start = 2)

В данном случае "старт" - константа.

Я не знаю, как я могу написать это на C++

Что я уже пробовал:

Вот мой код на C++ :
#include <iostream>
using namespace std;

int Algorithm(int, const int);
int main()
{
	const int start = 2;
	int num, ans;
	cin >> num;
	ans = Algorithm(num, start);
	cout << ans;
	return 0;
}

int Algorithm(int n, const int start = 2)
{
	if (n == 1) {
		return 1;
	}
	else {
		int ans = 0;
		int i;
		for (i = start; i <= n; i++)
		{
			if (n % 1 == 0) {
				ans += Algorithm(n / i, i + 1);
			}
		}
		return ans;
	}
}
А вот и мой код на Python:
def algorithm(n, start=2):
    if n == 1:
        return 1
    else:
        ans = 0
        for i in range(start, n+1):
            if n % i == 0:
                ans += algorithm(n // i, i + 1)
        return ans

n = int(input())
ans = algorithm(n)
print(ans)

Richard MacCutchan

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

2 Ответов

Рейтинг:
2

KarstenK

лучше всего писать

int Algorithm(int n, int start)
избежать недоразумений.


Рейтинг:
2

markkuk

Начальный параметр не является константой, это параметр со значением по умолчанию. Во-первых, читайте о значения аргументов по умолчанию в Python[^] и в C++[^]. В C++ аргумент по умолчанию должен быть указан в объявление функции[^].

#include <iostream>
using namespace std;

int Algorithm(int n, int start = 2);
int main()
{
    int num, ans;
    cin >> num;
    ans = Algorithm(num);
    cout << ans;
    return 0;
}

int Algorithm(int n, int start)
{
	if (n == 1) {
		return 1;
	}
	else {
		int ans = 0;
		int i;
		for (i = start; i <= n; i++)
		{
			if (n % 1 == 0) {
				ans += Algorithm(n / i, i + 1);
			}
		}
		return ans;
	}
}