c语言用动态规划法的思想输出斐波那契数列前20项。(利用数组)
3个回答
展开全部
好像线性规划是不用数组的 我把递归,线性规划和数组的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++平台测试通过!
#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++平台测试通过!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询