C++编写递归函数,排列出斐波那契数列的前20个数。

先上代码: 

#include
#include
using namespace std;
int fib(int n)
{	int m = 1;
	if (n == 1 || n == 2)
		m = 1;
	else
		m = fib(n - 1) + fib(n - 2);
	return m;
}
int main()
{	int i,a[20];
	for (i = 0; i < 20; i++)
		a[i] = fib(i+1);
	for (i = 0; i < 20; i++)
	{
		if (i % 5 == 0 && i != 0)
			cout << endl;
		cout <

↑↑↑期中考试考的一道题,之前写过一道求第n个斐波那契数的题:

#include
using namespace std;
int fib(int n)
{	int m = 1;
	if (n == 1 || n == 2)
		m = 1;
	else
		m = fib(n - 1) + fib(n - 2);
	return m;
}
int main()
{
	int a;
	cin >> a;
	cout << fib(a) << endl;
	return 0;
}

结果猛然看到这个输出前20个数的附加条件居然有点懵,一时半会儿没写出来QAQ

但这两道题主要运用的就是函数的递归调用:

C++编写递归函数,排列出斐波那契数列的前20个数。_第1张图片

后来仔细分析了一下,我考试的时候其实是想用下面这个方式答的:

奈何大脑短路,没有想出完整过程QWQ

(可能是最近在学指针的缘故,非常沉迷构造不需要返回值的函数吧0.0)

#include
#include
using namespace std;
void fib(int a[])
{
	int i;
	for (i = 2; i < 20; i++)
		a[i] = a[i - 1] + a[i - 2];
	for (i = 0; i < 20; i++)
	{
		if (i % 5 == 0&&i!=0)
			cout << endl;
		cout << setw(5) << a[i];
	}
}
int main()
{
	int a[20] = {1,1};
	fib(a);
	return 0;
}

你可能感兴趣的:(C++,c++,c语言)