斐波那契数列 C++算法

#include <iostream>

using namespace std;

long fib(long m, long p, long q)
{
	if (m == 1)
	{
		return p;
	}
	if (m == 2)
	{
		return q;
	}
	if (m > 2)
	{
		return fib(m - 1, p, q) + fib(m - 2, p, q);
	}
	if (m < 1)
	{
		cout << "Input error!" << endl;
		return 0;
	}
}

long fib1(long n, long p, long q)
{
	long temp[2];
	temp[0] = p;
	temp[1] = q;
	if (n == 1)
	{
		return temp[0];
	}
	if (n == 2)
	{
		return temp[1];
	}
	for (long index = 3; index <= n; index++)
	{
		long temp1 = temp[0];
		long temp2 = temp[1];
		temp[0] = temp2;
		temp[1] = temp1 + temp2;
	}
	return temp[1];
}



int main(int argc, char *argv[])
{
	int m, p, q;
	cout << "Fibonacci:" << endl;
	cout << "m:";
	cin >> m;
	cout << "p:";
	cin >> p;
	cout << "q:";
	cin >> q;
	cout << "Fibonacci1(" << m <<"," << p << "," << q << ",) = " << fib(m, p, q) << endl;
	cout << "Fibonacci2(" << m <<"," << p << "," << q << ",) = " << fib1(m, p, q) << endl;

	system("pause");
	return 0;
}


 

你可能感兴趣的:(斐波那契数列 C++算法)