@author 小焕哥
第一题
- 1斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...数列第一项和第二项是1, 从第三项开始,每一项都等于前两项之和。本题的详细要求如下:
- 实现计算斐波那契数列第n项值的方法。定义静态方法f(int n), 参数n是数列的项数,返回值是第n项的值,例如: f(1) 的值是1, f(6)的值是8。
- 验证当n比较大时候,相邻两项的比值接近黄金分割比值0.618,验算f(45)/f(46)的值大约是0.618。
代码
package mypackage;
import java.util.Scanner;
public class WeekExercise {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
System.out.println(num(n));
int b=in.nextInt();
System.out.println(num2(b));
}
public static int num(int a){
int[] ssr=new int[a];
for(int i=2;i<a;i++) {
ssr[0]=1;
ssr[1]=1;
ssr[i]=ssr[i-1]+ssr[i-2];
}
return ssr[a-1];
}
public static double num2(int c) {
int j=num(c);
int k=num(c+1);
double f=(double)(j)/k;
return f;
}
第二题
- 实现删除数组中某一元素的算法
- 当给定一个数组和该数组中的某一元素的位置时,利用算法将该数组中的该位置的元素删除。如: 有一个数组,其元素内容为 {2,3,4,5,6},当删除位置为1的元素后,该数组的元素内容更改为{2,4,5,6}。
- 上述描述中的算法,要求通过一个方法来实现,该方法的声明如下所示
int[] remove(int[] ary, int index){}
```
##代码
```java
package mypackage;
import java.util.Arrays;
public class Del {
public static void main(String[] args) {
int[] a= {2,3,4,5,6};
int[] b=remove(a,2);
for(int i=0;i<b.length;i++) {
System.out.print(b[i]);
}
}
public static int[] remove(int[] ary,int index) {
for(int q=index-1;q<ary.length-1;q++) {
int t=ary[q];
ary[q]=ary[q+1];
ary[q+1]=t;
}
ary=Arrays.copyOf(ary, ary.length-1);
return ary;
}
}