@raspberryjelly

Почему программа постоянно выводит 0? Как исправить?

Задание:
61a65324cf8e3110463516.png

#include <iostream>
using namespace std;
int fibonacci(int n)
{
	if (n == 0)
		return 0;
	else if (n == 1)
		return 1;
	else
		return fibonacci(n - 1) + fibonacci(n - 2);
}
int main()
{
	int x{}, N{};
	double S{};
	cout << "Input x and N: " << endl;
	cin >> x >> N;
	for (int i{ 1 }; i <= N; i++)
	{
		S += ((fibonacci(i)) / (x + fibonacci(i + 1)));
	}
	cout << "S = " << S << endl;
	return 0;
}
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Вы делите два int-а, там где формулу считаете. В языке C++ в этом случае происходит деление нацело. Поскольку числитель меньше знаменателя - всегда получается 0. Или static_cast-ом приводите к double, или тип где-то на double поменяйте (функции или переменной). Или, на худой конец, прибавляйте 0.0 к числителю или знаменателю.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы