例:有一对兔子,从出生后第三个月开始每个月都生一对兔子,小兔子长到第三个月后也每个月生一对兔子,(不知道近期繁殖会不会有问题?)
析:
第一个月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);
}
}
类似的小题目还有很多,最著名的汉诺塔大家有兴趣也可以了解一下。
递归的优点不言而喻,但是感觉在真正工作中用的的次数有限(有可能是大神用法我看不懂),神一样的递归思想还有很多值得发掘。
加入了一些自己的想法:面向客户 写的不好欢迎指正。