1)數列this
一、一、二、三、五、八、1三、2一、3四、...spa
2)遞歸公式3d
1)題目blog
假如兔子都不死,問 第n月 的兔子總數 爲多少?遞歸
2)求解隊列
遞歸公式,也即:斐波那契數列ci
f(n) = f(n-1) + f(n-2) f(1) = 1 f(2) = 1
1)題目資源
問 第n月 的兔子總數 爲多少?rem
2)求解it
使用 "遞歸" 實在太繞,改用 隊列實現了,資源佔用 反而會比較少一些
public class RabbitPopulation { private class Rabbit { int age = 1; // 新生的兔子,默認爲 1 歲 void growUp() { this.age++; } } public int count(int month) { Queue<Rabbit> population = new ArrayDeque<Rabbit>(); // 初始化 第1月 population.add(new Rabbit()); int monthCount = 1; while(monthCount < month) { // 月的 循環 int count = population.size(); while(count > 0) { // 某一個月中,兔子的循環 Rabbit rabbit = population.remove(); switch (rabbit.age) { // 1=>2 歲的兔子,只成長,不產仔 case 1: rabbit.growUp(); population.add(rabbit); break; // 2=>三、3=>4 歲的兔子,成長,併產仔 case 2: case 3: rabbit.growUp(); population.add(rabbit); population.add(new Rabbit()); break; // 4=>5 歲的兔子,在 產完仔後,會死亡 default: population.add(new Rabbit()); } count--; } monthCount++; } return population.size(); } public static void main(String[] args) { RabbitPopulation s = new RabbitPopulation(); System.out.println("總數量:" + s.count(15)); } }