c语言用动态规划法的思想输出斐波那契数列前20项。(利用数组)
1个回答
展开全部
好像线性规划是不用数组的
我把递归,线性规划和数组的3中方法都贴在这里了。
#include
"stdio.h"
#include
"stdlib.h"
void
Fibonacci(int
a[],int
n)//循环数组
{
int
i=0;
a[0]=1;
a[1]=1;
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
}
int
f(int
n)//递归
{
if(n==1||n==2)
return
1;
return
f(n-1)+f(n-2);
}
int
f2(int
n)//线性规划
{
int
f1=1,f2=1,sum=0;
printf("\n1\n1\n");
for(int
i=3;i<=n;i++)
{
sum=f1+f2;
f1=f2;
f2=sum;
printf("%d
\n",sum);
}
}
void
printArray(int
a[],int
n)
{
int
i=0;
for(i=0;i<n;i++)
{
printf("%2d
",a[i]);
}
printf("\n");
}
main()
{
int
a[20],n=0;
Fibonacci(a,20);
printf("Fibonacci数列如下:\n");
printArray(a,20);
printf("请输入n:");
scanf("%d",&n);
printf("%d\n",f(n));
printf("线性规划如下:\n");
f2(n);
system("pause");
}
楼主好运!DevC++平台测试通过!
我把递归,线性规划和数组的3中方法都贴在这里了。
#include
"stdio.h"
#include
"stdlib.h"
void
Fibonacci(int
a[],int
n)//循环数组
{
int
i=0;
a[0]=1;
a[1]=1;
for(i=2;i<n;i++)
{
a[i]=a[i-1]+a[i-2];
}
}
int
f(int
n)//递归
{
if(n==1||n==2)
return
1;
return
f(n-1)+f(n-2);
}
int
f2(int
n)//线性规划
{
int
f1=1,f2=1,sum=0;
printf("\n1\n1\n");
for(int
i=3;i<=n;i++)
{
sum=f1+f2;
f1=f2;
f2=sum;
printf("%d
\n",sum);
}
}
void
printArray(int
a[],int
n)
{
int
i=0;
for(i=0;i<n;i++)
{
printf("%2d
",a[i]);
}
printf("\n");
}
main()
{
int
a[20],n=0;
Fibonacci(a,20);
printf("Fibonacci数列如下:\n");
printArray(a,20);
printf("请输入n:");
scanf("%d",&n);
printf("%d\n",f(n));
printf("线性规划如下:\n");
f2(n);
system("pause");
}
楼主好运!DevC++平台测试通过!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询