关闭

JAVA中的递归方法应用

标签: javadistance面试优化
1527人阅读 评论(0) 收藏 举报

之前在CSDN中见到过一个运输问题,问题如下:

现有1辆车,10桶油,车自带一油箱,油箱容量恰为一油桶容量,每一桶油可以让车跑1公里,而车上每次只能带一个油桶,初始条件为油桶和车现在同一起跑位置,车上油箱中满油,而油桶里的油可以倒到车的油箱,反之亦可以。问用JAVA实现这个过程,求出车可以用这些油最多跑多远。

这个题在数学里属于优化类的题目,但是这个题出现在面试的时候,那么个人认为这个题的目的不是考查你的数学能力,加之用JAVA实现,显然它考查的是程序设计能力。故把这个问题的模型进行抽象化为JAVA中的递归问题。

思路:可以考虑每次让车用一桶油将剩余油向前运送一定距离,这样就可以用递归方法求解。用JAVA实现如下:

int bucketNum = 11;//初始油问题为11桶(加油箱中油)
int distance = 0;//车的运输距离
public int transit(int bucketNum )
{
 if(bucketNum==2)
 {
  distance += 2;//如仅剩两桶油可以直接跑完
  return distance;
 }
 else
 {
  distance += 1/(2*bucketNum - 3);//车用一桶油把其余油向前运送的距离
  distance += transit(bucketNum--);
 }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6946次
    • 积分:127
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:1条
    文章分类
    文章存档
    最新评论