【解题思路】
斐波那契数,简单的讲就是除了第1项和第2项是1以外,其它的每一项都等于前两项的和。比如:1,1,2,3,5,8,13……,所以要求出第n项的值,需要从第3项开始,用循环逐项往后求,每次保存前两项,一直求到循环变量等于n为止。具体代码如下:
【程序代码】
int Fibonacci(int n) //求斐波那契数第n项的值
{int a,b,s,i; //a,b为前2项,s为第n项,i是循环变量
a=b=1;s=1; //初始化前2项和第n项的值
for(i=3;i<=n;i++) //从第3项开始逐项求值
{s=a+b; //求出第i项的值
a=b;b=s;} //重置a和b的值,为求正一项作准备
return s;}
【程序示例】
#include//控制台操作头文件
int main() //主函数
{int n,s,i; //第n项值为s,i是循环变量
do{printf("请输入一个正整数(0退出):");//输入提示
scanf("%d",&n); //输入第n项
if(n==0) break; //输入0退出循环结束函数
if(n<0) {printf("\n");continue;} //如果输入负数重新输入
printf("%d项的斐波那契数是:",n); //显示提示
for(i=1;i<=n;i++) //用一个循环输入每一项
{s=Fibonacci(i); //求出第i项的值
printf("%d ",s);} //示示第i项的值
printf("\n\n");}while(1); //设置一个无穷循环
printf("\n"); //换行
system("PAUSE"); //暂停屏幕查看结果
return 0;} //结束程序
【运行结果】
以上程序在DEV C++运行通过,截图如下:
#include
#include
using namespace std;
int fibonaci(int n) {
if (n <= 0) {
return -1;
}
if (n == 1 || n == 2) {
return 1;
}
else {
return fibonaci(n - 2) + fibonaci(n - 1);
}
}
int main()
{
for (int i = 1; i <= 30; i++) {
cout << fibonaci(i) << endl;
}
return 0;
}
如图