Java-根据斐波拉契数列来方式求解一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

根据斐波拉契数列来方式求解函数

  • f(n)=f(n-1)+f(n-2)

<1>这是我刚开始的错误思路,固化为每三个月生产一次,但是每对兔子的出生月份不一样,那生产日期也不一样

package fiboracci;
import java.util.Scanner;

public class Fiboracci {
	
	public static void main(String[] args) {
		
		Scanner input=new Scanner(System.in);
		
		System.out.println("请输入月数:");
		int num=input.nextInt();
		int temp=1;
		
		for (int i = 0;i <=num;i+=3) {
			temp*=2;
		}
		System.out.println("第"+num+"个月有"+temp+"个兔子");
	}
}

<2>根据根据斐波拉契数列来方式求解函数

  • f(n)=f(n-1)+f(n-2)
package fiboracci;
import java.util.ArrayList;
import java.util.List;

public class FiboracciDemo1 {
	
	List list=new ArrayList();
	int temp=0;
	
	public void fiboracci(int num) {
		
		//按照月份储存兔子的出生日期
		for (int i =0; i <=num; i++) {
			if(i<3) {
				list.add(i,1);
			}else {
				temp=(int)(list.get(i-1))+(int)(list.get(i-2));
				list.add(i, temp);
			}
		}//for
		System.out.println("第"+num+"个月一共有"+list.get(num)+"对兔子");
	}//fiboracci
}

package fiboracci;
import java.util.Scanner;
public class Test {

	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		FiboracciDemo1 fd=new FiboracciDemo1();
		System.out.print("请输入月份:");
		fd.fiboracci(input.nextInt());
		
	}

}

发布了23 篇原创文章 · 获赞 2 · 访问量 1030

猜你喜欢

转载自blog.csdn.net/weixin_46101839/article/details/104476027