斐波拉契数列进行编译,采用三种不同的方法实现,迭代,递归,数组

来源:互联网 发布:阿里云短信接口 编辑:程序博客网 时间:2024/05/17 08:30

数组的方式

package santiago;import java.util.Scanner;/** * 这里是利用数组的方式求斐波拉契数列 * @author santiago * */public class ArrFi {public static int i;private void fo(int m) {int [] a = new int[10];a[0] = 1;a[1] = 1;for (i = 2; i <= m; i++) {if(i==2||i==1){a[i] = 1;}else{a[i] = a[i-1]+a[i-2];}}System.out.println(a[i-1]);}public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入你想求第几个月的兔子!");int num = in.nextInt();ArrFi b = new ArrFi();if(num>0){b.fo(num);}else{System.out.println("请输入大于0 的数");}}}


迭代的方式


package santiago;import java.util.Scanner;/** * 这里是按照迭代的方式求斐波拉契数列 * @author santiago * */public class NorFi {private void sum(int m) {int s = 1;int s1 = 1;int s2 = 0;if(m==0||m==1){s = 1;}else{for (int i = 2; i <= m+1; i++) {s = s1 + s2;s1=s2;s2=s;}}System.out.println(s);}public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("请输入你求第几个月的兔子!");int m = in.nextInt();NorFi a =new NorFi();a.sum(m);}}


递归的方式

package santiago;import java.util.Scanner;/** *  1 1 2 3 5 ……采用的是递归的方式 * @author santiago * */public class SumFi {private int f(int i) {if(i==1||i==2){return 1;}else{return f(i-1)+f(i-2);}}public static void main(String[] args) {SumFi a = new SumFi();System.out.println("你想求第几个月的兔子");Scanner in = new Scanner(System.in);int num = in.nextInt();if(num>0){System.out.println(a.f(num));}else{System.out.println("请输入大于0的整数");}}}


0 0
原创粉丝点击