我是C++的新手,我在幾個月前開始在大學學習它。 我有作業打印斐波那契數字索引(如果是)或打印0(如果不是)。但斐波那契有點不同。 F(n) = aF(n-1) + bF(n-2)
。其中a和b來自輸入。因此,我繼續輸入:
11(這些是a和b)
4(是輸入的數字的長度)
13 14 9 5(確切的數字)
。在這種情況下,這是常規斐波那契序列。因此,它具有打印:
7(FIB(7)= 13)
0(14不是一個FIB編號)
0(9不是一個FIB編號)
5(FIB(5)= 5)
獲取斐波那契數的索引
約束條件是:
A,b的數字 和每個數字的 計數應在範圍[0,百萬]
我沒有輸出。它真的給我打印指數,但沒有0。只有7和5.這裏是我的代碼:
#include <iostream>
#include <vector>
using namespace std;
int a,b;
int fib(int n)
{
if (n <= 1)
return n;
return a*fib(n-1) + b*fib(n-2);
}
int main()
{
int length;
vector<int> v;
int number;
while (cin >> a >> b >> length)
{
for (int i = 0; i < length; i++)
{
cin >> number;
v.push_back(number);
}
for (int i = 0; i < v.size(); i++)
{
for (int j = 0; j <= 30; j++) // 30 is max because 31 is beyond 1.000.000
{
if (v[i] == fib(j))
{
cout << j << endl;
}
}
}
v.clear();
}
return 0;
}
我該如何打印0呢?
你應該對Fibonacci數做一些研究。第n個斐波納契數是一個封閉的公式。換句話說,你只需插入'n',它立即吐出答案。您可能可以使用它來幫助您的解決方案。 –