#include "stdafx.h"
int f(int n)
{
if(n==1)
{
return 1;
}
else if(n==2)
{
return 2;
}
else
{
return f(n-1)+ f(n-2);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
while(1)
{
printf("请输入n");
scanf("%d",&n);
printf("%d\n",f(n));
}
return 0;
}
经过阿泽同学的指导,发现上面那个算法不可行,运算时间过长
修改过后如下
// demo2.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
double m[100]={0.0};
double f(int n)
{
if(n==1)
{
return 1.0;
}
else if(n==2)
{
return 2.0;
}
if(m[n]>0)
return m[n];
return m[n]=f(n-1)+ f(n-2);
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
while(1)
{
printf("请输入n");
scanf("%d",&n);
printf("%.0f\n",f(n));
}
return 0;
}