C++ 验证数字是否为斐波那契数的步骤

C++ 验证数字是否为斐波那契数的步骤,c++,fibonacci,C++,Fibonacci,有人能帮我解决这个错误吗?我对这个有点陌生,所以请带我过去 我还没有完全理解你的代码,但是这个错误意味着你要么在向量结束后,要么在向量开始之前访问它 与其将向量的大小保存为整数,不如使用std::vector::迭代器跟踪向量中的位置,然后使用vec.begin()作为其开始,使用vec.end()作为向量结束后的位置: 'std::out_of_range' what(): vector::_M_range_check std::vector::迭代器标记(vec.begin()); 如果(

有人能帮我解决这个错误吗?我对这个有点陌生,所以请带我过去

我还没有完全理解你的代码,但是这个错误意味着你要么在向量结束后,要么在向量开始之前访问它

与其将向量的大小保存为整数,不如使用std::vector::迭代器跟踪向量中的位置,然后使用vec.begin()作为其开始,使用vec.end()作为向量结束后的位置:

'std::out_of_range' what(): vector::_M_range_check
std::vector::迭代器标记(vec.begin());
如果(标记>=vec.begin()&&mark
过一会儿我会再看一遍您的代码。

更改

std::vector::iterator mark( vec.begin() );

if ( mark >= vec.begin() && mark < vec.end() )
   // You're looking inside the vector
else
   // you're before the beginning or past the end.


while(k您只需在内存中保留两个数字即可计算斐波那契数。如果您得到的值高于您要查找的值,则这不是斐波那契数:

while(k<l)

看着我,我在作弊。请给我们一个,而不是你的完整代码。在仍然出现错误的情况下,尽可能减少。此外,你要检查你的缩进。在某些地方有点不对劲。有一个fibonacci列表,首先使用for语句检查你的任何数字是否与fibonacci中的值匹配。抱歉,如果它不符合wh这是一个新的东西,所以请你容忍我!@ USS36768 46,你是新的,这就是为什么我们帮助你知道该怎么做。我相信你是一个类型的,你写了代码> CIT <代码>而不是<代码> CIN < /代码>。我可能错了,但是我不太使用C++。抱歉,但是我忘了在一个输入中我会被给予。测试用例的数量,对于这些数量,我必须识别斐波那契与否。
while(k!=l)
while(k<l)
long t;
std::cin >> t;
long cur = 1;
long prev = 0;

while (cur < t) {
    long next = cur + prev;
    prev = cur;
    cur = next;
}

if (cur == t || t == 0)
    std::cout << " is fib" << std::endl;
else
    std::cout << " is NOT fib" << std::endl;
long t;
std::cin >> t;
long cur = 1;
long prev = 0;
int steps;
std::cin >> steps;

while (cur < t && steps-- > 0) {
    long next = cur + prev;
    prev = cur;
    cur = next;
}

if ((cur == t || t == 0) && steps >= 0)
    std::cout << " is fib" << std::endl;
else
    std::cout << " is NOT fib" << std::endl;