编写算法输出斐波拉契数列的前n项(n<100),n由用户输入.输出显示时要求三个数一行,分行对齐输出.例如,用户输入8,则程序显示如下:
斐波拉契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)。
-
返还对应斐波拉契数列
-
该数列前两项都为1,因此n<2时,返回n,值1
-
第二项值等于(n-2)+(n+1)=1
-
第三项等于2
-
以此类推
int arr(int n) {
if (n < 2) return n;
return arr(n - 2) + arr(n - 1);
}
解题代码如下:
#include<iostream>
using namespace std;
int arr(int a)
{
if (a < 2)
return a;
return arr(a - 1) + arr(a - 2);
}
int main()
{
int a, n, i = 0;
cout << "请输入一个数:" << endl;
cout << "--------------------------------------" << endl;
cin >> n;
for (int a = 1; a <= n; a++)
{
if (i < 3 )
{
i++;
cout << arr(a) << " ";
}
else
{
i = 0;
i++;
cout << endl;
cout << arr(a) << " ";
}
}
return 0;
}
运行结果如下:
注意:需要注意i和a的值,稍有差错,会跳过一个数值