2014-10-08 57 views
0

一名男子开始一次汽车旅行,以访问他的公婆。总距离为60英里,他以每小时60英里的速度起步。驾驶完整1英里后,他失去了对旅程的热情,并(瞬间)减慢到每小时59英里。再行驶一英里后,他再次减速到每小时58英里。这种情况会持续下去,每旅行一英里每小时会逐渐减速1英里,直到旅程结束。我应该使用递归来回答这个问题而不是循环吗?

现在我不知道该怎么办,我相信,

我发现他对每英里的行驶速度,并计算需要多长时间他行走1英里,然后我添加所有的价值观都能达到答案。

我试图写一个方程来做到这一点,但我认为循环或递归会更简单。

有人可以指出我正确的方向,使这个程序给我正确的答案。在纸上,我可以轻松地添加并获得4.6小时(正确的答案),但它只是有点难以编写递归程序(或者我应该使用循环?)

+0

为您的情况使用循环。 – vikeng21 2014-10-08 04:13:45

回答

0

对于这个确切的问题,没有很多复杂性和资源问题。您可以使用任一解决方案。我猜在这种情况下循环会更简单。据说递归也不会很复杂。

0

递归这将是:

public static double run(double miles, double speed){ 
    if(miles <= 1){ 
     return 1/speed; 
    } 
    return 1/speed + run(miles-1, speed-1); 
} 

这会给你的小时数(double类型),它需要(因为英里在英里单位,并且在英里每小时的速度)

修改相应的数据类型,你想

,如果您使用的三元运营商喜欢一个更小的代码块:

public static double run(double miles, double speed){ 
    return 1/speed + (miles <= 1 ? 0 : run(miles-1, speed-1)); 
}