最大间隙
求解数组元素在实轴上相邻的2个数之间的最大差值
输入
第一行输入一个正整数N,表示数据的个数
接下来的一行中有N个实数,表示数组中的N个元素,中间以空格分隔
输出:
实轴上相邻的两元素之间差值的最大值
样例输入:
5
2.1 3.1 7.5 1.5 6.3
1-2 2-4 4-6 6-8
1.5 2.1 3.1 6.3 7.5
样例输出:
3.2
解题思路:
1、递归 将该函数看作 F(n)= F(n-1)+ F(n-2) ,F(1) = 1 ,F(2)= 1
2、非递归 取两个变量x,y,每次运算分别记录f(n-2)、f(n-1)的值
#include<stdio.h>
#include<time.h>
int Fibonacci1(int n){
int sum=0;
if(n==2 || n==1) sum= 1;
else sum+=Fibonacci1(n-1)+Fibonacci1(n-2);
return sum;
}
int Fibonacci2(int n){
int sum,i,x,y;
sum=0;x=1;y=1;
if(n==1 || n==2) sum=1;
else{
for(i=2;i<n;i++){
sum=x+y;
x=y;
y=sum;
}
}
return sum;
}
int main(){
int m,i,n[10];
clock_t start, finish;
double time;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&n[i]);
printf("递归:\n");
start=clock();
for(i=0;i<m;i++)
printf("%d\n",Fibonacci1(n[i]));
finish=clock();
time=(double)(finish-start)/CLOCKS_PER_SEC;
printf("运行时间为:%f\n",time);
printf("非递归:\n");
start=clock();
for(i=0;i<m;i++)
printf("%d\n",Fibonacci2(n[i]));
finish=clock();
time=(double)(finish-start)/CLOCKS_PER_SEC;
printf("运行时间为:%f\n",time);
return 0;
}