Java_实现斐波拉契序列

例题.有一组数据:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 …
特点:从第三个数开始,当前的数是前面俩个数相加之和
要求1:写出一方法,给方法传一个参数,可以返回一个这样序列的数组,这个参数表示这个序列的长度:
例如:test(1) 返回数组{1}
test(2)返回数组{1,1}
test(3)返回数组{1,1,2}
test(4)返回数组{1,1,2,3}
依次类推:
要求2:方法内部的代码也要使用数组实现
要求3:方法的声明如下所示
public int[] test(int num){
int[] a = null;
//实现代码
return a;
}

  1. 利用数组实现这个序列:
package com.chouhan.test1;
public class Test1 {
	public static int[] test(int num) {
		//定义一个数组,数组的长度就是序列的长度
		int[] a=new int[num];
		//前两个数是固定的
		if(num==1) {
			a[0]=1;
		}else if(num==2) {
			a[0]=1;
			a[1]=1;
			//从第三个数开始,每个数是前两个数相加之和
		}else {
			a[0]=1;
			a[1]=1;
			//从数组的第三个元素,也就是下标为2开始,循环给数组元素赋值
			for (int i = 2; i < a.length; i++) {
				//当前这个数的前两个数的和
				a[i]=a[i-1]+a[i-2];
			}
		}
		return a;
	}
	public static void main(String[] args) {
		//测试输出满足规律的数组,数组的长度为5
		int[] test=test(5);
		//迭代器的方式输出数组
		for (int i : test) {
			System.out.println(i);
		}
	}
}
  1. 递归:java中的方法调用有⼀种情况称为递归,就是⼀个方法内部再调用自己,同时提供⼀个退出方法条件。
    利用递归的方式完成上面的题目:
package com.chouhan.test1;
public class Method2 {
	//1.先用递归实现每一个数
	public int test(int num){
		//前两个数是1
		if (num <= 2)
			return 1;//只有一行代码可以省略大括号
		//后两个数就用递归的方式实现
		return test(num - 1) + test(num - 2);
	}
	public static void main(String[] args) {
		Method2 m = new Method2();
		//2.定义一个数组把每个数加进去
		int[] a=new int[10];//这个数组长度是10
		for (int i = 0; i < a.length; i++) {
			a[i]=m.test(i+1);//数组下标从0开始,递归函数从1开始
		}
		//3.遍历输出这个数组
		for (int i : a) {
			System.out.println(i);
		}
	}
}

递归实现:1到100的累加。

package com.chouhan.test1;
/*
 * 要求:
 * 1.在go⽅法内部完成代码
 * 2.实现从1累加到100的和
 * 3.go⽅法内部的所写的代码不能超过俩句,注意⼀个分号就是⼀句代码。
 */
public class Test3 {
	public static void main(String[] args) {
		Test3 t = new Test3();
		int sum = t.go(100);
		System.out.println(sum);
	}
	public int go(int i) {
		if(i==1) {
			return 1;
		}else {
			//要实现累加,就要加上前面的那个累加总数
			return i+go(--i);//go(i-1)也可以
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值