原来数学还是很重要!

 1.请用一行代码写出结果 不能用IF和三目运算符 现在有M个人,每个房间住N个,请问一共需要多少房间!

答案(answer)::( M+ (N-1) ) /N

解释(explain):因为有两种极端情况,一种就是整除,一种就是整除完了多一个。1.在整除的情况下,我只要加一个不大于N的数K都可以保证(M+K)/N == M/K 所以,这个只要加了就保证了整除的正确性;2.在整除完了多一个的情况下,我只能给M加上一个N-1才能保证能~满足(M+K)/N == M/K 所以综上所述,我用了( M+ (N-1) ) /N这个式子。

 

2.有个50层台阶楼梯,你可以一步走一个,也可以一步走两个,请问有多少种走法!给出你的思路算法和代码!

答案(answer):如果只有一层楼梯,我们显然有1中走法;如果有两层楼梯,我们有两种走法,也就是1+1和2;如果有三层楼梯,我们有三种走法,1+1+1和1+2和2+1;其实在这里,我们就得出了递推公式的结论,也就是有N层的走法等于N-2和N-1的和。用通俗一点的话来说就是,如果我想走到第三层楼梯,那要不就是从3-1步跨一步上来的,要不就是从3-2步跨两步上来的,所以这个结论就是f(n) = f(n-2) + f(n-1);再总结一下就是经典的斐波拉切数列(小变形)。1,2,3,5,8,。。。。。。至于第50层的就可以去算了。

 

总结:经过斐波拉切数列推理,解决了问题。哦,原来数学确实很重要!对于程序员来说,就是算法很重要!思维很重要!

如果有正在程序员这条路上走的同学,好好学数学吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值