Даниил Кондрашов
Ученик
(165)
4 месяца назад
Ошибка "invalid types 'int[int]' for array subscript" в вашем коде на C++ происходит потому, что вы пытаетесь использовать индексацию массива на переменную n, которая является целым числом, а не массивом. В строке now = n[i-1] + n[i-2]; вы пытаетесь получить доступ к элементам массива n, но n не является массивом.
Чтобы исправить эту ошибку, вам нужно использовать вектор fib вместо n для доступа к предыдущим числам Фибоначчи. Вот исправленный код:
#include <iostream>
#include <vector>
using namespace std;
vector<int> phi(int n)
{
vector <int> fib;
fib.push_back(1);
fib.push_back(1);
for (int i = 2; i < n ; ++i){
int now = fib[i-1] + fib[i-2];
fib.push_back(now);
}
return fib;
}
int main()
{
int n;
cin >> n;
vector<int> res = phi(n);
for (int i = 0; i < res.size(); ++i){
cout << res[i] << " ";
}
return 0;
}
Этот код будет корректно генерировать и выводить последовательность Фибоначчи до n терминов.
#include <vector>
using namespace std;
vector<int> phi(int n)
{
int k = n, now = 0;
vector <int> fib;
fib.push_back(1);
fib.push_back(1);
for (int i = 2; i < n ; ++i){
now = n[i-1] + n[i-2];
fib.push_back(now);
}
return fib;
}
int main()
{
int n;
cin >> n;
vector<int> res = phi(n);
for (int i = 0; i < res.size(); ++i){
cout << res[i] << " ";
}
return 0;
}
Выводит ошибку invalid types 'int[int]' for array subscript