JAVA中的递归方法应用

原创 2006年05月30日 11:48:00

之前在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--);
 }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java中的递归原理分析

参加工作已经三四年了,再回头来看这些很基础的东西,觉得理解又深入了一层! 解释:程序调用自身的编程技巧叫做递归。 程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设...

Java递归算法应用

递归: 就是函数自身调用自身。 什么时候用递归呢? 当一个功能被重复使用,而每一次使用该功能时的参数不确定,都由上次的功能元素结果来确定。 简单说: 功能内部又用到该功能,但是传递的...

页面上的JS文件加载失败!

JS文件导入失败,在确定无误的情况下,将src指向的路径改成全路径。 因为在C:\Documents and Settings\Owner\Local Settings\Temporary Inte...

ArrayList和LinkedList的操作性能对比

ArrayList和LinkedList都是实现了Collection和List接口,继承AbstractList的链表。 ArrayList: List 接口的大小可变数组的实现。实现了所有...

JavaWeb 服务启动时,在后台启动加载一个线程。

JavaWeb 服务启动时,在后台启动加载一个线程。 目前,我所掌握的一共有两种方法,第一种是监听(Listener),第二种是配置随项目启动而启动的Servlet。 下面对这两种方法做一简单的介...

java中递归方法的应用--计算n的阶乘

java中递归方法的应用–计算n的阶乘一个方法的方法体内调用该方法本身就是递归方法。 递归要向已知的方向进行。import java.util.Scanner;public class Recurs...

JQuery 操作基本控件

根据控件的样式class获取控件 $(".className")...... //className代表的就是控件的样式 根据控件的ID获取控件 $("#id")...... ...

java中递归函数的调用

java中递归函数的调用-求一个数的阶乘 不考虑溢出:一般只能算到69的阶乘…… 注意:0的阶乘0!=1 任何大于1的自然数n阶乘表示方法: n!=1×2×3×……×n ...

qmail总结笔记(2)

1)qmail 文档 man 文档/var/qmail/man你可能需要自己手动增加这个手册目录路径到你的环境变量MANPATH里面. Shell 解释器命令行Bourne (/bin/sh) MAN...
  • cz_hyf
  • cz_hyf
  • 2006-02-19 21:57
  • 1141

Java创建对象的存储方式

提问:程序运行时,对象是怎么进行放置安排的呢?内存是如何进行分配的呢? 有以下五个地方可以存储数据: 寄存器:这是最快的存储区,因为它位于不同于其他存储区的地方--处理器内部。但是寄存器的数量...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)