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());
		
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章