Выдаёт -nan(ind)
В двух идентичных примерах коды работают по разному:
double f2(int n, double a, int x) {
a += sin(x * n);
if (1 < n){
n--;
f2(n, a, x);
}
else {
return a;
}}
В данном случае выдаётся: -nan(ind)
void f3(int n, double a, int x) {
a += sin(x * n);
if (1 < n) {
n--;
f3(n, a, x);
}
else{
cout << "third = " << a << endl;
}}
Здесь же ответ выдаётся правильный, хотя смысл решения тот же!!! Почему в пером случае в качестве ответа какая-то фигня??? Функция вызывается со следующими параметрами: a = 0,n = 2,x = 2
Ответы (1 шт):
Автор решения: AlexGlebe
→ Ссылка
В первом случае вы не возвращаете значение из функции (нет команды return при условии (1 < n)). Возвращается именно неопределёнка. Нужно возвращать результат. Вот пример, всегда возвращаю. Компилятор должен был вам сообщить предупреждением, а вы исправить.
double f2(int n, double a, int x) {
a += sin(x * n);
if (1 < n){
n--;
a = f2(n, a, x); }
return a; }