作者:mobiledu2502881513 | 来源:互联网 | 2018-06-19 04:46
今天地铁上和一个同事闲聊,给我说的一道题,回来想了想,写出来的,说来惭愧,我用的是行测方面数字推理里面的知识归纳出来的,当然这个可以用递归写出来,说说我的代码,以及递归的思路
代码如下:
题:
有n个直线最多可以把一个平面分成多少个部分
线条数:
内交点:
分割数:
说一下规律:
①最多分成的部分:线条数+内交点数+1
②内交点数=(线条数-1)的内交点数+(线条数-1),新添加的线条可以会与除他之外的线条有交点
③用递归求出内交点数,然后代入①计算
上面是正常的数学思维,下面说说我用的行测知识,就是我代码的东东
我列出了1~5条直线一些可用的参数:
直线数 内交点 外交点 部分数
1 0 2 2
2 1 4 4
3 3 6 7
4 6 8 11
5 10 10 16
发现,外交点是没有意义的,反正都是直线数的2倍
而部分数=直线数+内交点数+1
相邻直线个数内交点个数组成一个等差数列,这个等差数列公差为1, 1-0=1,3-1=2,6-3=3,10-6=4, 横向看1+0=1,2+1=3,3+3=6...但是这样还是用到了递归要求出上一个对应的内交点个数,于是纵向看规律,2*1=2 3*2=6 4*3=12...正好是内交点个数的2倍