Эта программа должна запускать функцию до тех пор, пока она не удовлетворяет условию (ответ < 0,01), а затем сообщите о количестве необходимых серверов (c) для этого условия. Моя программа никогда не доходит до этой точки, потому что она начинает возвращаться на полпути через программу. Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?Почему моя функция начинает возвращать nan?
#include <iostream>
#include <cmath>
#include <math.h>
using namespace std;
float product (float p);
float answer;
int main()
{
cout << "Searching for minimum number of servers..." << endl;
float c;
float answer;
do
{for (c=1; c<220; c++)
{
answer = product(c);
cout << "when c is " << c << " answer is " << answer << endl;
}
}while (answer >= 0.01);
cout << "when c is " << c << " answer is " << product(c) << endl;
cout << "Minimum number of servers required is " << c << endl;
return 0;
}
float product (float p)
{
float temp;
float result;
if (p==0)
answer = 1;
else
temp=200*product(p-1);
result=temp/(temp+p);
return result;
}
Добро пожаловать в Stack Overflow! Просить людей обнаружить ошибки в коде не особенно продуктивно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, отслеживая ход вашей программы и сравнивая ее с тем, что вы ожидаете. Как только двое расходятся, вы нашли свою проблему. (И затем, если необходимо, вы должны построить [минимальный тестовый сценарий] (http://sscce.org).) –
В вашем базовом случае (то есть: 'p == 0') вы никогда не устанавливаете' result', вы только установите 'ответ'. Я не знаком с стандартом C++, но для некоторых языков неинициализированные значения могут вызывать неопределенное поведение. –