有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律就像上图所示的,类似还有台阶问题
an = an-1+an-2
package 面试; /** * 1 1 2 3 5 8 13 21 * 怎么算出当月有多少兔子呢 * @author liugang * @create 2018/12/19 16:55 **/ public class RabbitNum { public static void main(String[] args) { int i = 1; for (i=1;i<=20;i++){ System.out.println("兔子第"+i+"个月的总数为:"+f(i)); } } public static int f(int x){ if (x==1 || x==2){ return 1; }else{ return f(x-1)+f(x-2); } } }
类似的还有走台阶问题。
每次走一阶或者两阶,问你走n阶有多少种方法?
要不然先到an-1的台阶跨一步台阶就到了
要不然先到an-2的台阶跨两步台阶就到了
很显然an = an-1+an-2