Java经典题:递归求不死神兔

例:有一对兔子,从出生后第三个月开始每个月都生一对兔子,小兔子长到第三个月后也每个月生一对兔子,(不知道近期繁殖会不会有问题?)
析:
第一个月1
第二个月1
第三个月3
第四个月5
第六个月8
…(家族真庞大)
我们可以得到一个数列:费波纳切数列
1 1 3 5 8。。。。。。。
除了第一第二个数以外其他的数等于前俩个数相加
我们可以用递归来求解;
递归的思想(自己总结的,不喜勿喷)
构造循环条件
构造循环题
调用自身
话不多说 上代码


public static void main(String[] args) {
  
  Scanner scan = new Scanner(System.in);
  System.out.print("你想知道第几个月的兔子总量");
  int month =scan.nextInt();
  r(month);
  System.out.print("第"+month+"月兔子的总量为:"+r(month));
  
 }
 
//构建方法
 private static int r(int month) {
  if(month==1||month==2){
  	 return 1;
  }else{
   return r(month-1)+r(month-2);
  }
 }

类似的小题目还有很多,最著名的汉诺塔大家有兴趣也可以了解一下。
递归的优点不言而喻,但是感觉在真正工作中用的的次数有限(有可能是大神用法我看不懂),神一样的递归思想还有很多值得发掘。
加入了一些自己的想法:面向客户 写的不好欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值